我对Python还是有点陌生,但是,我现在觉得真的很蠢,因为我刚刚花了一个小时试图弄清楚为什么这个for循环没有达到我想要的效果。我不应该花一个小时在for循环上。不管怎样,我正在尝试生成一个字典列表,给每个字典一个唯一的数字,所以我做了这个。。。你知道吗
def initiate(n):
records = {'num':0,'blah':0,'doubleblah':0}
x = []
for i in range(n):
x.append(records)
x[i]['num'] = i
return x
x = initiate(4)
print(x)
我希望函数返回这个--
[
{'num': 0, 'doubleblah': 0, 'blah': 0},
{'num': 1, 'doubleblah': 0, 'blah': 0},
{'num': 2, 'doubleblah': 0, 'blah': 0},
{'num': 3, 'doubleblah': 0, 'blah': 0}
]
但它实际上返回这个--
[
{'num': 3, 'doubleblah': 0, 'blah': 0},
{'num': 3, 'doubleblah': 0, 'blah': 0},
{'num': 3, 'doubleblah': 0, 'blah': 0},
{'num': 3, 'doubleblah': 0, 'blah': 0}
]
…当我向函数中添加一些print语句时,我发现它似乎在向列表中的每个字典添加数字,而不仅仅是当前字典。我真的不知道代码如何添加到所有dict中,因为我显式地使用x[i] = i
只将数字添加到当前字典中。你知道吗
所发生的事情是,您每次都在列表中添加对同一词典的引用。你知道吗
您的函数正确地写为:
每次都会产生一个新的字典实例。你知道吗
相关问题 更多 >
编程相关推荐