将字典反转为键:值列表?

新手上路,请多包涵

如何将 python 字典 d = {1:10, 2:20, 3:30, 4:30} 转换为 {10: [1], 20: [2], 30: [3, 4]}

我需要反转字典,值应该成为另一个字典的键,值应该是列表中的键,即也在排序的事物中。

原文由 Amit Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 416
2 个回答
d = {1:10, 2:20, 3:30, 4:30}
inv = {}
for key, val in d.iteritems():
    inv[val] = inv.get(val, []) + [key]

尝试这个!

原文由 Dishant Kapadiya 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 python 字典中反转键和值有点棘手。您应该记住,python 字典必须有一个 unique 键。

所以,如果你知道在反转当前字典的键和值时会有一个唯一的键,你可以使用一个简单的 dict comprehension 就像这个例子:

 {v:k  for k,v in my_dict.items()}

但是,您可以使用 groupby 来自 itertools 模块,如下例所示:

 from itertools import groupby

a = {1:10, 2:20, 3:30, 4:30}
b = {k: [j for j, _ in list(v)] for k, v in groupby(a.items(), lambda x: x[1])}
print(b)

>>> {10: [1], 20: [2], 30: [3, 4]}

原文由 Chiheb Nexus 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进