我有两个字典列表:
l1 = [{'a': 'mike', '4/22/20': 10}, {'b': 'bob', '4/22/20': 5}]
l2 = [{'a': 'mike', 'pop': 40, '4/22/20': 1}, {'b': 'bob', 'pop': 30, '4/22/20': 1}]
我想将这些内容合并为一个格式如下的列表:
cl = [{'a': 'mike', 'pop': 40', '4/22/20': [10,1]}, {'b': 'bob', 'pop': 30, '4/22/20': [5,1]}]
我看过许多相关的解决方案,但无法获得我试图工作的任何东西。任何轻推都会感激。
更新备用格式,将时间序列收集到唯一的字典键中:
l1 = [{'a': 'mike', '4/22/20': 10, '4/23/20': 11}, {'b': 'bob', '4/22/20': 5, '4/23/20': 9}]
l2 = [{'a': 'mike', 'pop': 40, '4/22/20': 1, '4/23/20': 1}, {'b': 'bob', 'pop': 30, '4/22/20': 1, '4/23/20': 2}]
导致:
cl = [{'a': 'mike', 'pop': 40', 'time_data': {'4/22/20': [10,1], '4/23/20': [11,1]}}, {'b': 'bob', 'pop': 30, 'time_data': {'4/22/20': [5,1], '4/23/20': [9,2]}}]
我确实希望对除日期键/值以外的每个字段进行重复数据删除,即使它们是相同的值,我也都需要它们。
答案 0 :(得分:0)
结果是列表而不是字典
def merge(d1, d2):
for k in set(d1+d2):
if k in d1:
v1 = d1[k]
if k in d2:
v2 = d2[k]
yield k, (v1 if v1 == v2 else [v1, v2])
else:
yield k, v1
else:
yield k, d2[k]
[dict(merge(d1, d2)) for d1, d2 in zip(l1, l2)]