Skip to main content
 首页 » 编程设计

python之如何使用默认 key :value pairs given in another dict 更新 python 字典

2025年05月04日9lori

假设字典应该有特定的键。如果缺少这些特定的键,是否有一种简单的方法可以将它们添加为默认值?

例如:

default_dict = {'name': '', 'height': 100, 'age': 20}  
 
d = {'name': 'James', 'age': 65} 
d.set_defaults(default_dict) 

会将字典d更新为

{'name': 'James', 'age': 65, 'height': 100} 

保留 d 的原始值,只添加缺少的键。

default_dict 不应在此过程中被破坏。

请您参考如下方法:

创建默认值的副本,并用d更新它;如果 d 中的所有键都是字符串,您可以通过一个 dict() 调用来实现:

d = dict(default_dict, **d) 

对于具有非字符串键的字典,您将使用两个步骤:

d = default_dict.copy() 
d.update({'name': 'James', 'age': 65}) 

或者您可以使用循环来更新 d,其中包含任何不存在的使用字典 View 的键;然而,这并没有那么快:

d = {'name': 'James', 'age': 65} 
d.update((k, default_dict[v]) for k in default_dict.viewkeys() - d) 

用 Python 3 中的 keys 替换 viewkeys。

如果您使用的是 Python 3.5 或更新版本,则可以使用类似的语法来创建新字典:

d = {**default_dict, 'name': 'James', 'age': 65} 

首先应用 default_dict 的键值对,然后是您设置的任何新键;这些将覆盖旧的。参见 PEP 448 - Additional Unpacking Generalizations在 3.5 新增功能文档中。

任何创建新字典的方法都可以简单地通过包装在 dict.update() 调用中来更新现有字典。所以第一个可以就地更新 d :

d.update(dict(default_dict, **d))