检查具有相似键但值不同的两个词典

时间:2013-05-13 14:28:50

标签: python dictionary

我有两本词典。 dict1和dict2。 dict 2的长度始终相同,但dict1的长度不同。两个词典如下:

dict2 = {"name":"martin","sex":"male","age":"97","address":"blablabla"}

dict1 = {"name":"falak", "sex":"female"}

我想创建一个基于dict1和dict2的第三个字典。 dict3将具有dict2的所有值。但是所有这些密钥都将被替换为dict1中存在的密钥。这是最终的dict3

dict3 = {"name":"falak","sex":"female","age":"97","address":"blablabla"}

我可以使用多个if语句,但希望有一种更聪明的方法。可以请有人指导我。

4 个答案:

答案 0 :(得分:11)

你试过了吗?

dict3 = dict(dict2, **dict1)

或者:

dict3 = dict2.copy()
dict3.update(dict1)

答案 1 :(得分:1)

import copy
dict3 = copy.copy(dict2)
dict3.update(dict1)

答案 2 :(得分:0)

来自python documentation

  

<强>更新([其他])

     
      
  • 使用其他键中的键/值对更新字典,覆盖现有键。
  •   
  • 返回无。
  •   
  • update()接受另一个字典对象或一对键/值对的迭代(作为元组或长度为2的其他迭代)。如果指定了关键字参数,则使用这些键/值对更新字典:d.update(red = 1,blue = 2)。
  •   
  • 版本2.4中已更改:允许参数为键/值对的可迭代,并允许使用关键字参数。
  •   

所以:

dict1.update(dict2)

答案 3 :(得分:0)

首先,从d1添加d2中没有键的项目。来自d1的所有其他键都在d2中。

然后,你添加来自d2的所有键,如果d1中没有这样的键,则来自d2的值,如果d1中存在键,则来自d1的值。

dict2 = {"name":"martin","sex":"male","age":"97","address":"blablabla"}
dict1 = {"name":"falak", "sex":"female"}

dic = dict()

for key, val in dict1.items():
  if key not in dict2.keys():
    dic[key] = val

for key, val in dict2.items():
  if key not in dict1.keys():
    dic[key] = val
  else:
    dic[key] = dict1[key]