【发布时间】:2011-01-16 09:16:26
【问题描述】:
我对下面的 python 表达式很感兴趣:
d3 = dict(d1, **d2)
任务是将两个字典合并为第三个,上面的表达式完成了任务。我对 ** 运算符以及它对表达式的作用感兴趣。我以为 ** 是幂运算符,还没有看到它在上面的上下文中使用过。
完整的sn-p代码如下:
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3 = dict(d1, **d2)
>>> print d3
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
【问题讨论】:
-
需要注意的是,GvR认为这个表达式是despicable
-
这仅在
d2中的键是字符串时才有效,至少在 Python 3 中是这样。 -
哦,很酷,我完全没有意识到它可以在 Python 2 中工作。我想这是
dict(d1, **d2)优于dict(**d1, **d2)或{d1, **d2}或{**d1, **d2}的优势——它可以工作在 Python 2 中。我认为最后一个是 Python 3 中的首选语法,因为它简洁且一致。但是很高兴知道在 Python 2 中有一种方法可以做到这一点,至少使用字符串键,即使它看起来有点 hackish。
标签: python syntax dictionary operators set-operations