python:将dict附加到列表问题中

时间:2017-10-02 19:24:37

标签: python

我在python上真的很新。有了考试代码,我发现了一些奇怪的东西

这是我的代码。

cat_log = []
container = {}
for index in range(10) : 
    container["idx"] = index
    cat_log.append(container)
print(cat_log)

我想要这样的结果:[{' idx' :0},{' idx' :1},{' idx' :2},{' idx' :3}]。 但是我的代码没有输出这个结果。 这样的事情:[{' idx' :3},{' idx' :3},{' idx' :3},{' idx' :3}] 我已经用谷歌搜索了为什么会这样,但我没有找到任何正确的想法。 什么错了,为什么?

1 个答案:

答案 0 :(得分:0)

当您附加容器时,您没有复制,所以您只是反复添加对同一个字典的引用。你也在改变字典,你不能在字典中拥有相同键的多个值,它只是每次用当前索引覆盖idx。

相反,每次迭代都附加一个新字典。例如:

cat_log = []
for index in range(10) : 
    cat_log.append({"idx": index})
print(cat_log)