如何基于键合并两个词典但在python中包含缺少的键值?

问题描述 投票:0回答:2

如果我有两个具有不同长度的字典,同时具有相似和不相似的键,我们如何才能实现下面的合并结果。

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}
          }
python dictionary
2个回答
3
投票

我使用方括号(列表)而不是卷曲(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}

1
投票

这是你想要的吗?

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']}  
© www.soinside.com 2019 - 2024. All rights reserved.