我对以下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}
答案 0 :(得分:41)
**
具有特殊含义,如section 4.7 of the tutorial所述。与**kwargs
一起传递的字典(或类字典)对象被扩展为可调用的关键字参数,就像*args
被扩展为单独的位置参数一样。
答案 1 :(得分:12)
**将字典转换为关键字参数:
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3 = dict(d1, **d2)
变为:
>>> d3 = dict(d1, c=3, d=4)
答案 2 :(得分:9)
在Python中,任何函数都可以接受多个参数*;
或多个keyword arguments与**。
接收方示例:
>>> def fn(**kwargs):
... for kwarg in kwargs:
... print kwarg
...
>>> fn(a=1,b=2,c=3)
a
c
b
呼叫方示例(感谢Thomas):
>>> mydict = dict(a=1,b=2,c=3)
>>> fn(**mydict)
a
c
b
答案 3 :(得分:3)
还值得一提的是dict构造函数的机制。它将初始字典作为其第一个参数,并且还可以获取关键字参数,每个参数表示要添加到新创建的字典的新成员。
答案 4 :(得分:1)
答案 5 :(得分:1)
你得到了**运算符的答案。这是添加词典的另一种方法
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3=d1.copy()
>>> d3.update(d2)
>>> d3
{'a': 1, 'c': 3, 'b': 2, 'd': 4}