结合两个字典,优先选择其中之一 -

Roh*_*kan 6 python grouping dictionary

我有两本字典

一:

default = {"val1": 10, "val2": 20, "val3": 30, "val4": 40}
Run Code Online (Sandbox Code Playgroud)

二:

parsed = {"val1": 60, "val2": 50}
Run Code Online (Sandbox Code Playgroud)

现在,我想以这样一种方式组合这两个字典,即两个字典中存在的键的值都从字典中取出parsed,其余的键default和它们的值都放入新字典中。

对于上面给出的字典,新创建的字典将是,

updated = {"val1": 60, "val2": 50, "val3": 30, "val4": 40}
Run Code Online (Sandbox Code Playgroud)

对此进行编码的显而易见的方法是遍历 in 中的键default并检查它是否存在,parsed然后将其放入一个新列表中updated,并且在同一检查的 else 子句中,我们可以使用来自 的值default

我不确定这是一种 Pythonic 的方式还是一种更简洁的方法。有人可以帮忙吗?

abc*_*abc 16

您可以创建一个新字典,其中在值方面应该具有优先权的字典在{**dict1,**dict2}哪里dict2

>>> updated = {**default, **parsed}
>>> updated
{'val1': 60, 'val2': 50, 'val3': 30, 'val4': 40}
Run Code Online (Sandbox Code Playgroud)


Ann*_*Zen 5

首先,dict使用dict.copy()方法创建您想要保留的值的副本然后,使用dict.update()方法将另一个更新dict到创建dict副本中:

default = {"val1": 10, "val2": 20, "val3": 30, "val4": 40}
parsed = {"val1": 60, "val2": 50}

updated = default.copy()
updated.update(parsed)

print(updated)
Run Code Online (Sandbox Code Playgroud)

输出:

{'val1': 60, 'val2': 50, 'val3': 30, 'val4': 40}
Run Code Online (Sandbox Code Playgroud)