如何在python中将字典的列表合并成一个字典,如果键有不同的值,值应该是列表的?[duplicate]

wbrvyc0a  于 2023-01-22  发布在  Python
关注(0)|答案(1)|浏览(100)
    • 此问题在此处已有答案**:

List of dicts to/from dict of lists(14个答案)
3天前关闭。
我有一张字典的单子,

lst = [{'A':1,'B':2,'C':4},{'A':2,'B':2,'C':4},{'A':3,'B':2,'C':4}]

我想把它合并到一个字典中,如果一个键有不同的值,就把值放在list中。

desired output = {'A':[1,2,3},'B':2,'C':4}

我试过了但结果是,

{'A':[1,2,3},'B':[2],'C':[4]}
mrphzbgm

mrphzbgm1#

您可以使用defaultdict来实现此目的:

from collections import defaultdict
lst =[{'A':1,'B':2,'C':4},{'A':2,'B':2,'C':4},{'A':3,'B':2,'C':4}]

d = defaultdict(list)

print(d)
#  defaultdict(list, {})

for x in lst:
  for k,v in x.items():
    d[k].append(v)

print(dict(d))

#  {'A': [1, 2, 3], 'B': [2, 2, 2], 'C': [4, 4, 4]}

要获得所需结果:

{ k : v if len(set(v)) > 1 else v[0] for k, v in d.items()}

#  {'A': [1, 2, 3], 'B': 2, 'C': 4}

相关问题