建立
我有一本大字典,列表中有唯一键,唯一值和非唯一值。
字典看起来像
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']}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句