Python 创建键/值和键/值颠倒的dict

Python 创建键/值和键/值颠倒的dict,python,generator,list-comprehension,Python,Generator,List Comprehension,有这样的名单 example=['ab','cd'] 我需要得到{'a':'b','b':'a','c':'d','d':'c'} 使用常规循环,我可以这样做: result = {} for i,j in example: result[i] = j result[j] = i 问题:如何在一行上完成相同的操作?使用字典更新列出理解 [result.update({x[0]:x[1],x[1]:x[0]}) for x in example] A应做到: In [726]:

有这样的名单

example=['ab','cd']

我需要得到
{'a':'b','b':'a','c':'d','d':'c'}

使用常规循环,我可以这样做:

result = {}
for i,j in example:
    result[i] = j
    result[j] = i

问题:如何在一行上完成相同的操作?

使用字典更新列出理解

[result.update({x[0]:x[1],x[1]:x[0]}) for x in example]
A应做到:

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'}

另一种可能的解决办法:

dict(example + [s[::-1] for s in example])
[s[::-1]对于示例中的s]
创建一个新列表,其中所有字符串都反转<代码>示例+[s[:-1]表示示例中的s]将列表组合在一起。然后,
dict
构造函数根据键值对列表(每个字符串的第一个字符和最后一个字符)构建字典:


您可以使用
以分隔逻辑行

result=dict(example); result.update((k,v) for v,k in example)
但当然

result=dict(example+map(reversed,example)) # only in python 2.x


工作也一样。

dict(示例+[s[:-1]代表示例中的s])
@vaultah,请将其作为答案,我将接受示例中x的
:result.update({x[0]:x[1],x[1]:x[0])
更干净。您仍然需要
result={/code>
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
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