这是这个问题的延伸。这似乎显示了一个附加到数组的示例,而不是向子字典添加另一个值。
dict_1 = {a: {price: 4000}, b: {price: 14000} }
dict_2 = {a: {discount: 0100}, b: {discount: 0400} }
dict_3 = {a: {amount: 41}, b: {amount: 522} }
我想把它们合并成:
merged_dict: { a: {
price: 4000,
discount: 0100,
amount: 41
},
b: {
price: 14000,
discount: 0400,
amount: 522
}
}
如何实现?如果有更长的字典列表需要合并,情况又会怎样呢?字典将始终具有相同的键(a, b)。
我试着做同样的在第一个超链接,但.items()
似乎使它无法扩展。
您可以通过将字典放在列表中并在推导式中创建合并后的字典来推广这种合并:
dict_1 = {"a": {"price": 4000}, "b": {"price": 14000} }
dict_2 = {"a": {"discount": 100}, "b": {"discount": 400} }
dict_3 = {"a": {"amount": 41}, "b": {"amount": 522} }
dicts = [dict_1, dict_2, dict_3]
merged = { k:dict(kv for d in dicts for kv in d[k].items()) for k in dicts[0] }
print(merged)
{'a': {'price': 4000, 'discount': 100, 'amount': 41},
'b': {'price': 14000, 'discount': 400, 'amount': 522}}