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

4 回答 4

11

你有没有尝试过:

dict3 = dict(dict2, **dict1)

或者:

dict3 = dict2.copy()
dict3.update(dict1)
于 2013-05-13T14:30:22.450 回答
1
import copy
dict3 = copy.copy(dict2)
dict3.update(dict1)
于 2013-05-13T14:39:45.970 回答
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]
于 2013-05-13T14:37:20.957 回答
0

python文档

更新([其他])

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

所以:

dict1.update(dict2)
于 2013-05-13T14:32:35.677 回答