使用多个键更新dict但空值

时间:2018-03-12 00:28:15

标签: python

我知道此错误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是必需的。谢谢

1 个答案:

答案 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'。它还打印出一大堆东西。所以我猜这仍然不是你想要的,但它确实解决了你所问的问题,应该足以让你进入下一步。