d3 = {** d1,** d2}`和`d4 = dict(** d1,** d2)之间的差?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了d3 = {** d1,** d2}`和`d4 = dict(** d1,** d2)之间的差?相关的知识,希望对你有一定的参考价值。
说,有两个字典,其中一些关键句被怀疑。然后,我想结合这两个字典,并使用d2的键替换d1。
d1 =
"2222": 1:3,
"3333":1:5
d2 =
"2222": 1:5,
"4444":"a"
# expected output is
# '2222': 1: 5, '3333': 1: 5, '4444': 'a'
我尝试过
d3 = **d1, **d2 # works
d4 = dict(**d1, **d2) # failed
TypeError: type object got multiple values for keyword argument '2222'
我很困惑为什么d3 = **d1, **d2
有效但是d4 = dict(**d1, **d2)
失败了,以及**
在这两个表达式中的含义是什么?
答案
dict()
是一种获取可迭代对象并从中生成新字典的方法。
Init signature: dict(self, /, *args, **kwargs)
Docstring:
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object's
(key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
d =
for k, v in iterable:
d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs
in the keyword argument list. For example: dict(one=1, two=2)
Type: type
Subclasses: OrderedDict, defaultdict, Counter, _EnumDict, Bunch, Config, Struct, ColorSchemeTable, FastDictCache, _CharSizesCache, ...
[d3 = **d1, **d2
内置在python中。
因此有所不同。
另一答案
他们做的事情略有不同。
第一个类似于写作
d3 = "2222": 1:3, "3333":1:5, "2222": 1:5, "4444":"a"
您在定义字典时重复按键的位置。这是允许的(但可能不是一个好主意)。
第二个类似于写作
d4 = dict("2222"=1:3, "3333"=1:5, "2222"=1:5, "4444"="a")
[您在这里调用dict
传递关键字,并且该关键字重复两次。在语言级别上是禁止的。
以上是关于d3 = {** d1,** d2}`和`d4 = dict(** d1,** d2)之间的差?的主要内容,如果未能解决你的问题,请参考以下文章