的直接解決方案是這樣的:唯一的參數是other
可選和元組(或長度的兩個其他iterables)的迭代。
無參數(它是可選的,因爲當你不需要它:-)!
>>> d = {}
>>> d.update()
>>> d
{}
與元組列表(不與方括號包圍可選參數混淆):
>>> d = {}
>>> d.update([("key", "value")])
>>> d
{'key': 'value'}
根據該Python glossary on iterables,一個元組(如所有序列類型)也可迭代,然而,這將失敗:
>>> d = {}
>>> d.update((("key", "value")))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 3; 2 is required
的Python documentation on tuple
再次解決了這個謎:
注意,它實際上是使一個元組,而不是括號中的逗號。括號是可選的,除了在空元組情況下,或者當需要避免句法歧義時。
I.e. (None)
是不是在所有元組,但(None,)
是:
>>> type((None,))
<class 'tuple'>
所以此工程:
>>> d = {}
>>> d.update((("key", "value"),))
>>> d
{'key': 'value'}
>>>
但這並不
>>> d = {}
>>> d.update(("key", "value"),)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 3; 2 is required
因爲說句法歧義(逗號是函數參數分隔符)。