有没有可能在python中使用字典理解来反转字典

2024-10-01 04:48:07 发布

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

我想使用字典理解来反转dictionarykey, value对,但是如果新字典有多个键值,那么它将被最后一个值替换。在

如果一个键被重复使用,是否可以在新字典中附加值?在

输入:

test_di = {'a':'1', 'b':'2', 'c':'3', 'd':'2'}

代码:

^{pr2}$

此代码的输出:

{'1': 'a', '3': 'c', '2': 'd'}

期望输出:

{'1': ['a'], '3': ['c'], '2': ['b','d']}

Tags: 代码test字典value键值di附加值pr2
3条回答

defaultdict将是最有效的方法:

from collections import defaultdict

test_di = {'a':'1', 'b':'2', 'c':'3', 'd':'2'}

d = defaultdict(list)
for v,k in test_di.items():
    d[k].append(v)

print(d)

你的问题令人困惑,但听起来你想在字典中的一个键上存储多个值。在

这是不可能的,您可能需要查看存储列表的字典。在

用字典理解是不可能以合理的方式(即O(N)时间)来完成的。理解不能处理重复的值。在

但是,使用常规循环很容易:

d = {}
for key, value in old_d.items():
    d.setdefault(value, []).append(key)

相关问题 更多 >