What does `**` mean in the expression `dict(d1, **d2)`?
dictionary, operators, python, set-operations, syntax
Solution
`**` in argument lists has a special meaning, as covered in section 4.7 of the tutorial. The dictionary (or dictionary-like) object passed with `**kwargs` is expanded into keyword arguments to the callable, much like `*args` is expanded into separate positional arguments.
Problem
I am intrigued by the following python expression: ``` d3 = dict(d1, **d2) ``` The task is to merge 2 dictionaries into a third one, and the above expression accomplishes the task just fine. I am interested in the ** operator and what exactly is it doing to the expression. I thought that ** was the power operator and haven't seen it used in the context above yet. The full snippet of code is this: ``` >>> d1 = {'a': 1, 'b': 2} >>> d2 = {'c': 3, 'd': 4} >>> d3 = dict(d1, **d2) >>> print d3 {'a': 1, 'c': 3, 'b': 2, 'd': 4} ```