如果我有两个具有不同长度的字典,同时具有相似和不相似的键,我们如何才能实现下面的合并结果。
left = {key1: x1, key2: y1 , key3: z1 , key5 : n1}
right = {key1: x2, key2: y2 , key4 : m1 ,key5 : n1}
结果:
d = { key1: {x1,x2},
key2: {y1,y2},
key3: {z1,missing},
key4 :{missing,m1}
key5 :{n1,n1}
}
我使用方括号(列表)而不是卷曲(set),因为看起来对于你来说顺序很重要,并且集合不保留元素的顺序。
keys = set(left.keys()) | set(right.keys())
d = {}
for k in keys:
d[k] = [left.get(k, 'missing'), right.get(k, 'missing')]
或者用理解符号略短
keys = set(left.keys()) | set(right.keys())
d = {k: [left.get(k, 'missing'), right.get(k, 'missing')] for k in keys}
这是你想要的吗?
left = {'key1': 'x1', 'key2': 'y1' , 'key3': 'z1' , 'key5' : 'n1'}
right = {'key1': 'x2', 'key2': 'y2' , 'key4' : 'm1' ,'key5' : 'n1'}
d=dict()
for key,val in left.items():
d[key]=[val]
for key,val in right.items():
if key in d.keys():
d[key].append(val)
else:
d[key]=[val]
print(d)
>>>> {'key1': ['x1','x2'], 'key2': ['y1','y2'] , 'key3': ['z1'], 'key4':['m1'] , 'key5' : ['n1','n1']}