Python &引用;字典更新序列元素#0的长度为4;2是必需的“;

Python &引用;字典更新序列元素#0的长度为4;2是必需的“;,python,dictionary,Python,Dictionary,尝试使用元组更新字典时,遇到错误: dict1.update((“stat”,10)) ValueError:字典更新序列元素#0的长度为4;2是必需的 事实上,这不应该发生。从python文档中 update()接受另一个dictionary对象或键/值对的iterable(作为元组或其他长度为2的iterable) 这毫无意义,因为我提供的元组的长度显然是2 >len((“stat”,10)) 2 发生了什么事?这是一个尚未解决的错误吗?运行Python 3.8.0 还是因为我的字典是空的?

尝试使用元组更新字典时,遇到错误:

dict1.update((“stat”,10))

ValueError:字典更新序列元素#0的长度为4;2是必需的

事实上,这不应该发生。从python文档中

update()接受另一个dictionary对象或键/值对的iterable(作为元组或其他长度为2的iterable)

这毫无意义,因为我提供的元组的长度显然是2

>len((“stat”,10))

2

发生了什么事?这是一个尚未解决的错误吗?运行Python 3.8.0

还是因为我的字典是空的?用其他字符串和值尝试了这个方法,同样的问题。

文档中说“或键/值对的iterable(如元组或长度为2的其他iterable)”

因此,您需要传递一个长度为2的元组的元组

试试这个:

dict1.update((("stat",10),))
也可以按如下方式传递多个键/值对:

dict1.update((("stat",10), ('foo', 'bar'), ('buzz', 'fizz')))

文档中说您需要一个键值对的iterable。单个元组不是键值对的iterable,列表或元组的元组都可以

dict1.update([(“stat”,10)])

在元组末尾添加一个
dict1.update(((“stat”,10),)

或者传递一个列表
dict1.update([(“stat”,10)])

我知道这个修复方法。但是我不想仅仅为了解决这个问题而建立一个临时字典。构建元组的速度更快。我也很好奇这个问题/bug的起源。试试
dict1.update({“stat”:10})
问题是它需要一个可数对,但是你直接传递了一对;缺少数据结构的一个级别。您需要将该级别的数据结构放入,或者是
dict1.update(((“stat”,10),)
,这是成对的元组,或者
dict1.update([(“stat”,10)])
,这是成对的列表。找到的长度是字符串“stat”的长度奇怪的是,它不能只处理一个元组。所以一个2长度的元组就永远不会工作了?这是有问题的,因为我必须一个接一个地添加每个值,因为我在一个循环中。我发现另一个线程解释了同样的事情:对于一个元组,你需要在它后面加一个逗号:
dict1.update(((“stat”,10),)
@sabik谢谢你的解释。我只是想通过传递多对元组来展示传递元组的概念。哪个更快?一个新的、临时的字典或元组的元组。逻辑上,元组应该更快,但我可能错了元组应该更快,使用更少的内存。我怀疑速度/内存的差异将是最小的,在绝大多数情况下肯定不值得担心。