2

我想避免使用 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'

我怎样才能让它工作?

4

2 回答 2

8
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不会返回listPython 2 中的 like,而是返回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})
于 2011-08-17T17:33:27.060 回答
7

从 Python 3.5 开始,习语是:

{**dict1, **dict2, ...}

https://www.python.org/dev/peps/pep-0448/

于 2016-10-04T14:21:37.247 回答