有这样的列表创建键/值和键/值字典逆转
example = ['ab', 'cd']
我需要得到{'a': 'b', 'b': 'a', 'c': 'd', 'd': 'c'}
通过定期循环我能做到这一点,如:
result = {}
for i,j in example:
result[i] = j
result[j] = i
问题:我如何在同一行上做同样的事情?
有这样的列表创建键/值和键/值字典逆转
example = ['ab', 'cd']
我需要得到{'a': 'b', 'b': 'a', 'c': 'd', 'd': 'c'}
通过定期循环我能做到这一点,如:
result = {}
for i,j in example:
result[i] = j
result[j] = i
问题:我如何在同一行上做同样的事情?
另一种可能的解决方案:
dict(example + [s[::-1] for s in example])
[s[::-1] for s in example]
创建了逆转的所有字符串的新列表。 example + [s[::-1] for s in example]
将列表组合在一起。然后dict
构造函数建立从键 - 值对列表的字典(第一个字符和每个字符串的最后一个字符):
In [5]: dict(example + [s[::-1] for s in example])
Out[5]: {'a': 'b', 'b': 'a', 'c': 'd', 'd': 'c'}
一个dict comprehension列表理解应该这样做:
In [726]: {k: v for (k, v) in map(tuple, example + map(reversed, example))} # Python 2
Out[726]: {'a': 'b', 'b': 'a', 'c': 'd', 'd': 'c'}
In [727]: {s[0]: s[1] for s in (example + [x[::-1] for x in example])} # Python 3
Out[727]: {'b': 'a', 'a': 'b', 'd': 'c', 'c': 'd'}
您可以使用;
到单独的逻辑行
result=dict(example); result.update((k,v) for v,k in example)
但当然
result=dict(example+map(reversed,example)) # only in python 2.x
或
result=dict([(k,v) for k,v in example]+[(k,v) for v,k in example])
也工作。
example = ['ab', 'cd']
res1={x[1]:x[0] for x in example}
res2={x[0]:x[1] for x in example}
res=res1.update(res2)
print res1
'字典(例如+ S [:: - 1]榜样中])' – vaultah
@vaultah,请把它写成的答案,我会接受它 – micgeronimo