【问题标题】:Python: Merge 2 dictionaries and add 0 if key is emptyPython:合并2个字典并在键为空时添加0
【发布时间】:2021-10-06 12:31:15
【问题描述】:

我有 2 个字典如下:

d1 = {a:2, b:4}
d2 = {a:13, b:3, c:5}

如何将这两者合并,如果一个键为空则加0?

结果应该是

= {a:[2,13], b:[4,3], c:[0,5]}
  

我试过用这个

d1 = {'a':2, 'b':4}
    d2 = {'a':13, 'b':3, 'c':5}

    dd = defaultdict(list)

    
    for d in (d1, d2): 
        for key, value in d.items():
            dd[key].append(value)

但我不知道怎么加 0,我真的是编程新手。

【问题讨论】:

  • 循环浏览其中一个字典。在另一个字典中找到相应的元素并将它们组合起来。如果找不到,请使用0。
  • StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
  • 将代码添加到问题中,确保其格式正确。

标签: python dictionary merge


【解决方案1】:

您可以获取键列表,然后使用dict.get 和默认值0 生成所需的字典

d1 = {'a':2, 'b':4}
d2 = {'a':13, 'b':3, 'c':5}

keys = set((*d1.keys(), *d2.keys()))

new_dict = {k: [d.get(k, 0) for d in [d1, d2]] for k in keys}

print(new_dict) #{'a': [2, 13], 'b': [4, 3], 'c': [0, 5]}

【讨论】:

    【解决方案2】:

    使用下面的代码。

    d1 = {'a':2, 'b':4}
    d2 = {'a':13, 'b':3, 'c':5}
    
    keys = set((*d1.keys(), *d2.keys()))
    result={}
    
    for k in keys:
        result[k]=list((d1.get(k, 0), d2.get(k,0)))
    print(result)#{'a': [2, 13], 'b': [4, 3], 'c': [0, 5]}
    

    【讨论】:

      猜你喜欢
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      • 2013-03-18
      相关资源
      最近更新 更多