不使用update()方法合并两个字典的新型实现方案咨询
Python 不使用
update()方法合并两个字典的新型实现方式 以下方法均默认处理规则为:两个字典存在重复键时,靠后字典的键值会覆盖靠前字典的对应键值:
- Python 3.5及以上版本可用:字典解包语法
这是目前兼容性最好的轻量合并写法,直接通过**解包两个字典到新字典中即可:
该方法也支持同时合并3个及以上的字典,只需在大括号内按顺序添加对应字典的解包表达式即可。dict1 = {"a": 1, "b": 2} dict2 = {"b": 3, "c": 4} merged_dict = {**dict1, **dict2} # 合并结果:{'a': 1, 'b': 3, 'c': 4} - Python 3.9及以上版本可用:字典合并运算符
Python 3.9正式引入了字典专属的合并运算符|,写法更简洁直观:
如果需要将第二个字典的内容直接合并到第一个字典中(类似dict1 = {"a": 1, "b": 2} dict2 = {"b": 3, "c": 4} merged_dict = dict1 | dict2 # 合并结果:{'a': 1, 'b': 3, 'c': 4}update()的原地修改效果),可以使用就地合并运算符|=:dict1 |= dict2 # 此时dict1已被修改为合并后的结果 - 支持自定义合并逻辑:字典推导式写法
如果需要自定义重复键的处理规则(比如数值相加、列表拼接等),可以用字典推导式实现,无需依赖特定Python版本:dict1 = {"a": 1, "b": 2} dict2 = {"b": 3, "c": 4} # 默认覆盖规则的写法 merged_dict = {k: v for d in [dict1, dict2] for k, v in d.items()} # 自定义重复键值相加的写法示例 merged_custom = {k: dict1.get(k, 0) + dict2.get(k, 0) for k in dict1.keys() | dict2.keys()}
内容的提问来源于stack exchange,提问作者faridmohammadi chianeh
相关产品推荐
相关产品推荐

