【发布时间】:2020-12-14 23:09:47
【问题描述】:
尝试使用元组更新字典时,遇到错误:
>>> dict1.update(("stat",10))
ValueError: dictionary update sequence element #0 has length 4; 2 is required
实际上这不应该发生。来自 python 文档,
update() 接受另一个字典对象或键/值对的可迭代对象(作为元组或其他长度为 2 的可迭代对象)。
这是没有意义的,因为我提供的元组显然长度为 2。
>>> len(("stat",10))
2
发生了什么事?这是一个尚未解决的错误吗?运行 Python 3.8.0。
还是因为我的字典是空的?用其他字符串和值试过这个,同样的问题。
【问题讨论】:
-
我知道这个修复。但我不想仅仅为了处理这个问题而建立一个临时字典。构建元组更快。我也很好奇这个问题/错误的起源。
-
试试
dict1.update({"stat": 10}) -
问题是它想要一个可迭代的对,但你直接传递了一对;缺少一级数据结构。您需要将该级别的数据结构放入,
dict1.update((("stat", 10),)),它是一个 tuple 对,或者dict1.update([("stat", 10)]),它是一个 list 对。 -
找到的长度是字符串“stat”的长度
标签: python dictionary