【问题标题】:How to merge dicts? [duplicate]如何合并字典? [复制]
【发布时间】:2020-05-09 15:45:00
【问题描述】:

我还想在dict3 中打印 10:20。如何执行此代码仅打印相同的密钥形式 dict1dict2。 我试过这个:

def mergeDicts(dict1, dict2):
    dict3 = {}
    for key, value in dict1.items():
        dict3[key] = (value, dict2[key])
    return dict3
print(mergeDicts({1:3, 2:4},{1:5, 2:6, 10:20})) 
out: {1: (3, 5), 2: (4, 6)}

【问题讨论】:

    标签: python dictionary merge


    【解决方案1】:

    您当前仅迭代来自dict1 的键/值,因此不会添加来自dict2 的缺失10 键。

    相反,您可以将两个字典与列表的collections.defaultdict 合并,并在迭代每个字典时添加两个字典中的项目。为了让任何数量的字典都灵活,我们可以使用*args 来传递可变长度的参数。

    我们还可以在最后使用字典推导将值转换为元组。

    from collections import defaultdict
    
    def mergeDicts(*dicts):
        result = defaultdict(list)
    
        for d in dicts:
            for k, v in d.items():
                result[k].append(v)
    
        return result
    
    merged = mergeDicts({1:3, 2:4}, {1:5, 2:6, 10:20})
    
    print({k: tuple(v) for k, v in merged.items()})
    

    输出:

    {1: (3, 5), 2: (4, 6), 10: (20,)}
    

    【讨论】:

      猜你喜欢
      • 2018-03-27
      • 1970-01-01
      • 2017-11-27
      • 2017-09-12
      • 1970-01-01
      • 2013-01-24
      • 2016-09-25
      • 2018-10-16
      • 2021-08-03
      相关资源
      最近更新 更多