python - python3:具有“+”操作数的字典的和(联合)引发异常

标签 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())

在Python3上,items不像Python2那样返回list,而是返回dict view。如果要使用+,则需要将它们转换为lists。
你最好在有或没有update的情况下使用copy
# doesn't change the original dicts
new_dict = {'a':1, 'b':2}.copy()
new_dict.update({'x':98, 'y':99})

关于python - python3:具有“+”操作数的字典的和(联合)引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096948/

相关文章:

通过规范值管理科学数据依赖图的python解决方案

python - Pytest 在哪里存储预期数据

python - 如何在使用 get duplicates() 时切换已弃用的代码

python - 为什么这个python函数在for循环中运行时跳过索引1到3而不迭代索引2

java - 切换到 map /枚举或其他

python - 仅使用字典 Python 3 计算 .txt 文件中的词频

python - 如何从 Pyspark RDD 中删除空行

python-3.x - TypeError : 'Not JSON Serializable' while doing tf. keras.Model.save 并在 tf.keras.Model.compile 的 loss_weights 中使用 keras 变量

ios - 将对象数组映射到 Swift 中的字典

python - 在python中逐级打印二叉树