gpt4 book ai didi

python - 当值是列表且项目不唯一时,交换字典键和值

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:30 24 4
gpt4 key购买 nike

设置

我有一个大字典,在列表中包含唯一键、唯一值和非唯一值。

字典看起来像,

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

问题

我想交换键和值,这样,

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

我找到了以下关于交换键和值的答案,

以及关于交换键与列表中的值,

最后一个答案很接近,但不管理列表中的非唯一值。

也就是说,

{k: oldk for oldk, oldv in d.items() for k in oldv}

产生

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

我如何解释非唯一值并且不丢失信息?

最佳答案

一种方法是使用 collections.defaultdict :

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

from collections import defaultdict
d_dict = defaultdict(list)
for k,v in d.items():
for i in v:
d_dict[i].append(k)

dict(d_dict)
#{'1': ['a', 'b', 'c'], '2': ['a'], '3': ['a', 'c']}

关于python - 当值是列表且项目不唯一时,交换字典键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49558140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com