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)
首先,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)