首页 > 解决方案 > 为什么我不能使用 '+' 在 Python 中合并字典?

问题描述

我是一个新的 Python 用户,我会有一些疑问。

我知道+运算符不仅执行数字之间的求和,还执行字符串或列表之间的连接。为什么字典不允许这样做?

标签: pythondictionaryconcatenationaddition

解决方案


dicts的运算符将如何+处理重复的键?例如

>>> {'d': 2} + {'d': 1}

也许像一个Counter

>>> from collections import Counter
>>> Counter({'d': 2}) + Counter({'d': 1})
Counter({'d': 3})

或者像一个defaultdict

{'d': [2, 1]}

或者覆盖第一个键dict.update

>>> d = {'d': 2}
>>> d.update({'d':1})
>>> d
{'d': 1}

还是只留下第一把钥匙?

{'d': 2}

说白了就是模棱两可!

另见PEP 0584

使用加法运算符

这个 PEP 最初是作为 dict 添加的提议开始的,使用 + 和 += 运算符。事实证明,这一选择极具争议性,许多人对运营商的选择持强烈反对意见。有关详细信息,请参阅 PEP 的先前版本和邮件列表讨论。

注意 Guido 本人确实考虑并讨论了这一点;另请参阅issue36144


推荐阅读