Меня заинтриговало следующее выражение Python:
d3 = dict(d1, **d2)
Задача состоит в том, чтобы объединить 2 словаря в третий, и приведенное выше выражение отлично справляется с задачей. Меня интересует оператор ** и что именно он делает с выражением. Я думал, что ** был оператором мощности, и еще не видел, чтобы он использовался в контексте выше.
Полный фрагмент кода таков:
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3 = dict(d1, **d2)
>>> print d3
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
d2
являются строками, по крайней мере, в Python 3. - person Brent Bradburn   schedule 18.08.2013dict(d1, **d2)
передdict(**d1, **d2)
,{d1, **d2}
или{**d1, **d2}
- это работает в Python 2. Я думаю, что последний синтаксис является предпочтительным синтаксисом в Python 3 , потому что он краткий и последовательный. Но приятно знать, что в Python 2 есть способ сделать это, по крайней мере, с помощью строковых ключей, даже если это выглядит немного хакерским. - person Michael Scheper   schedule 13.06.2017