我想在具有匹配键:值对的字典列表中组合/合并多个字典。但是,我不希望这些对中的“值”本身成为每个新形成的字典中的列表。每个字典都有相同的键集,但大多数键:值对将是唯一的,除了我想要组合的那个。我知道我可以根据匹配键组合字典,例如在本例中:
>>>from collections import defaultdict
d1 = {'A': 'str1', 'B': 41, 'C': 32}
d2 = {'A': 'str1', 'B': 12, 'C': 62}
d3 = {'A': 'str2', 'B': 47, 'C': 73}
d4 = {'A': 'str2', 'B': 101, 'C': 93}
dd = defaultdict(list)
for d in [d1, d2, d3, d4]: # you can list as many input dicts as you want here, I'll have a few thousand
for key, value in d.items():
dd[key].append(value)
print(dd)
这给了我预期的结果:
defaultdict(<class 'list'>, {'A': ['str1', 'str1', 'str2', 'str2'],
'B': [41, 12, 47, 101],
'C': [32, 62, 73, 93]})
当我想要的结果实际上是这样时:
[{'A': 'str1', 'B': [41, 12], 'C': [32, 62]},
{'A': 'str2', 'B': [47, 101], 'C': [73, 93]}]
例如,来自匹配键'B'和'C'形成列表的值,仅当键下存在匹配的键:值对时才组合字典,'A'而不形成相同值的列表'A'