你没有提供很多背景,所以必须做出假设:
-
你提到了一个列表,所以可能有两本以上的词典
-
您提供了两个结构相同的词典,因此我们可以假设这是所有词典的规则
在这些假设下,解决方案非常简单:
dict1 = {"num": {"a": 1, "b": 2}, "fruit": "banana"}
dict2 = {"num": {"a": 3, "b": 4}, "fruit": "apple"}
def merge_dicts(ds: list[dict]) -> dict:
return {
k: (
merge_dicts([d[k] for d in ds]) if isinstance(v, dict)
else [d[k] for d in ds]
) for k, v in ds[0].items()
}
merged_dict = merge_dicts([dict1, dict2])
print(merged_dict)
注:
for k, v in ds[0].items()
只循环列表中第一个字典的项目,因为假设所有字典的结构都是相同的(当涉及到字典值与其他类型时),并且具有相同的键。
输出:
{'num': {'a': [1, 3], 'b': [2, 4]}, 'fruit': ['banana', 'apple']}