创建带有键/值和键/值反转的字典

2024-04-26 11:39:51 发布

您现在位置:Python中文网/ 问答频道 /正文

有这样的名单

example = ['ab', 'cd']

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

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

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

问题:我怎样才能在一条线上做同样的事情?你知道吗


Tags: inforabexamplecdresult事情常规
3条回答

列表理解与词典更新

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

另一种可能的解决方案:

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

可以使用;分隔逻辑行

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])

工作也是。你知道吗

相关问题 更多 >