【发布时间】:2020-07-05 09:33:11
【问题描述】:
我有一本字典:
dog = {'color': 'black'}
我在一个列表中创建了 3 条相似的狗:
dogs = []
dog = {'color': 'black'}
for num in range(3):
dogs.append(dog)
当我尝试修改我的狗列表中的第一只狗时:
dogs[0]['color'] = 'white'
它检索我整个列表已修改:
[{'color': 'white'}, {'color': 'white'}, {'color': 'white'}]
但是当我在 for 循环中声明我的狗字典并尝试更改单只狗字典时:
for num in range(3):
dog = {'color': 'black'}
dogs.append (dog)
dogs[0]['color'] = 'white'
我得到了想要的输出:
[{'color': 'white'}, {'color': 'black'}, {'color': 'black'}]
【问题讨论】:
-
你自己说,在第一种情况下你有一本字典。在第二种情况下,您创建三个单独的字典。您没有创建 “3 条相似的狗”,您添加了三个对完全相同对象的引用。
-
对于列表也是如此 - 在您的第一种情况下,如果
dog是一个列表,dogs将是对单个相同列表的引用列表。 -
看起来你的狗应该是一个类,可以实例化。
-
是的,就是这样。 问题是什么?
标签: python loops dictionary for-loop output