我有一个字典列表(包含从 API 获取的一些数据)假设:
alist = [{'a':1, 'b':2, 'c':3}, {'a':1, 'b':2, 'c':35}, {'a':1, 'b':2, 'c':87}..]
在alist中有多个重复的字典。但是在重复的字典中只有一个键有不同的值。所以,查询是:
通过在列表中保留单独的值来组合这些字典的最简单方法是什么?
喜欢:
alist = [{'a':1, 'b':2, 'c':[3, 35, 87]}...]
更新 - 我有一个列表,其中指定了重复的键,例如:
repeated_keys = ['c',...]
请您参考如下方法:
使用defaultdict(速度更快)并从中生成字典——您还可以轻松将该字典转换为列表。您可以修改i中的j。 keys() 过滤键。
from collections import defaultdict as df
d=df(list)
alist = [{'a':1, 'b':2, 'c':3}, {'a':1, 'b':2, 'c':35}, {'a':1, 'b':2, 'c':87}]
for i in alist:
for j in i.keys():
d[j].append(i[j])
print dict(d.items())
输出-
{'a': [1, 1, 1], 'c': [3, 35, 87], 'b': [2, 2, 2]}
如果你想从中删除重复的元素,请使用 dict-comprehension 和 set-
>>>{k:list(set(v)) for k,v in d.items()}
>>>{'a': [1], 'c': [35, 3, 87], 'b': [2]}
