我正在尝试使用返回元组的函数更新字典,其中第一个元素是字符串。
唯一有效的方法是首先保存返回值。
如何解释这个问题?
>>> def t():
... return 'ABC', 123
然而,dict.update
函数并不太喜欢这样做。
>>> d = {}
>>> d.update(t())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 3; 2 is required
我也可以尝试使用字典推导式并获得相同的意外结果。
>>> d.update({k: v for k, v in t()})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <dictcomp>
ValueError: too many values to unpack (expected 2)
唯一有效的方法是首先保存返回值。
>>> x = t()
>>> d.update({x[0]: x[1]})
>>> d
{'ABC': 123}
如何解释这个问题?
(a, b)
)可以使用。而实际上,update
函数需要一个长度为2的可迭代对象的可迭代对象(即[(a, b)]
)。 - Spack