合并具有相同键值的两个词典

2024-04-25 09:07:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两本由相同的键组成的词典

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6]}

b = {'b':[7,4],
     'c':[10,11]}

当我合并它们时,字典b的键替换了a的键,因为它们的名字相同。这是我正在使用的合并代码

z = dict(list(a.items()) + list(b.items()))

我知道字典不能有相同的键名,但我可以用这样的方法:

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6],
     'b_1':[7,4],
     'c_1':[10,11]}

Tags: 方法代码字典items名字dictlist词典
3条回答

或许可以这样做:

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6]}

b = {'b':[7,4],
     'c':[10,11]}

z = {}

for key in a:
    if key in b:
        z[key + "_1"] = b[key]
        z[key] = a[key]
    else:
        z[key] = a[key]


print(z)                            

输出:

{'a': [3, 2, 5], 'b_1': [7, 4], 'b': [9, 8], 'c_1': [10, 11], 'c': [1, 6]}

可以在方法update()中使用生成器表达式:

a.update((k + '_1' if k in a else k, v) for k, v in b.items())
# {'a': [3, 2, 5], 'b': [9, 8], 'c': [1, 6], 'b_1': [7, 4], 'c_1': [10, 11]}

虽然我认为乌斯曼的答案可能是“正确”的解决方案,但从技术上讲,你要求的是:

for key, value in b.items():
  if key in a:
    a[key + "_1"] = value
  else:
    a[key] = value

相关问题 更多 >