python 3 : sum (union) of dictionaries with "+" operand raises exception

标签 python python-3.x dictionary dictview

我想避免使用 update() 方法,我读到可以使用“+”操作数将两个词典合并到第三个词典中,但是在我的 shell 中发生的是这样的:

>>> {'a':1, 'b':2}.items() + {'x':98, 'y':99}.items()
Traceback (most recent call last):
  File "<pyshell#84>", line 1, in <module>
    {'a':1, 'b':2}.items() + {'x':98, 'y':99}.items()
TypeError: unsupported operand type(s) for +: 'dict_items' and 'dict_items'
>>> {'a':1, 'b':2} + {'x':98, 'y':99}
Traceback (most recent call last):
  File "<pyshell#85>", line 1, in <module>
    {'a':1, 'b':2} + {'x':98, 'y':99}
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

我怎样才能让它工作?

最佳答案

dicts = {'a':1, 'b':2}, {'x':98, 'y':99}
new_dict = dict(sum(list(d.items()) for d in dicts, []))

new_dict = list({'a':1, 'b':2}.items()) + list({'x':98, 'y':99}.items())

在 Python 3 上,items 不像 Python 2 那样返回一个 list,而是一个 dict view .如果要使用+,则需要将它们转换为list

无论是否使用 copy,您最好使用 update:

# doesn't change the original dicts
new_dict = {'a':1, 'b':2}.copy()
new_dict.update({'x':98, 'y':99})

关于 python 3 : sum (union) of dictionaries with "+" operand raises exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096948/

相关文章:

python - 如何在 PyQT5 对话框窗口中记录按下的组合键

Python - 在一定数量的特殊字符后将字符串拆分为列表

python-3.x - 如何使我的 speech_recognition 暂停阈值正常工作

python - 将字符串视为十六进制并保持格式

javascript - 为什么我的带有扩展语法的 map() 不起作用?

dictionary - 如何使用反射反转 map

python - 运行单个测试有效,但运行多个测试失败 - Flask 和 Pytest

Python3 : in __getitem__ implementation distinguish Foo[1, 2] 来自 Foo[(1,2)]

python - 通过理解避免将重复项插入 Python 列表

python Pandas : String Contains and Doesn't Contain