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