首页 文章

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

提问于
浏览
3

我有两本词典 . 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

    你有没有尝试过:

    dict3 = dict(dict2, **dict1)
    

    要么:

    dict3 = dict2.copy()
    dict3.update(dict1)
    
  • 11
    import copy
    dict3 = copy.copy(dict2)
    dict3.update(dict1)
    
  • 1

    来自python documentation

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

    所以:

    dict1.update(dict2)
    
  • 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]
    

相关问题