# First initialize data, done correctly here.
D1 = [{'k1': 'v01'}, {'k3': 'v03'}, {'k4': 'v04'}]
D2 = [{'k1': 'v11'}, {'k2': 'v12'}, {'k4': 'v14'}]
# Get all unique keys
keys = {k for d in [*D1, *D2] for k in d}
# Initialize an empty dict
D3 = {x:[] for x in keys}
# sort to maintain order
D3 = dict(sorted(D3.items()))
#Iterate and extend
for x in [*D1, *D2]:
for k,v in x.items():
D3[k].append(v)
# NOTE: I do not recommend you convert a dictionary into a list of records.
# Nonetheless, here is how it would be done.
# To convert to a list
D3_list = [{k:v} for k,v in D3.items()]
print(D3_list)
# [{'k1': ['v01', 'v11']},
# {'k2': ['v12']},
# {'k3': ['v03']},
# {'k4': ['v04', 'v14']}]
如果您想使用实际的dict,而不是dict的列表,这会更容易。在
没有一个简单的内置函数来实现这一点,但是
^{pr2}$setdefault
方法非常接近。 它尝试获取给定的密钥,但如果它不存在,则创建它。在以及结果。在
这一切都假设顺序无关紧要,只是组合集合。在
无需导入任何内容的解决方案:
内置的dict-default函数不能用于此函数:
相关问题 更多 >
编程相关推荐