我知道此错误ValueError: dictionary update sequence element #0 has length 1; 2 is required存在讨论,但似乎不适用于我的情况。我试图添加最多2个元素到包含多个没有值(空)的键的dict但我得到错误。这就是我所拥有的:
df = [(1, 0, 0) (2, 0, 0) (3, 1, 2) (4, 0, 0) (5, 3, 4)]
points = set((i[0] for i in df if 0 in i))
n = {key:[] for key in points}
for i in n:
length = len(n[i])
for length in range(0, 2):
b = ["1", "0", "1"]
n.update(random.choice(b))
print(n)
我运行这个并得到错误:ValueError:字典更新序列元素#0的长度为1; 2是必需的。谢谢
答案 0 :(得分:2)
n.update(…)
尝试更新字典的第一个问题,而不是字典中的当前值。它期望给出一系列键值对,并且你没有给它,你给它一个单值。因此例外。
但无论如何,您要修改n[i]
,而不是n
。
由于每个n[i]
都是一个列表,而您要执行的操作是向该列表添加新值,只需调用n[i].append(…)
而不是n.update(…)
。
加入背景:
for i in n:
length = len(n[i])
for length in range(0, 2):
b = ["1", "0", "1"]
n[i].append(random.choice(b))
print(n)
如果你运行它,你会看到每个键最后都有一个恰好两个值的列表;这些值中约有三分之二是字符串'1'
,其余的是字符串'0'
。它还打印出一大堆东西。所以我猜这仍然不是你想要的,但它确实解决了你所问的问题,应该足以让你进入下一步。