在Python中为字典中的列表项赋值

在Python中为字典中的列表项赋值,python,dictionary,Python,Dictionary,我想更改dict of list中的一个值,但字典中列表索引相同的值都会更改。我在终端上玩过它,你们可以看到两个不同的显示器以相同的方式显示。 抱歉,我还不允许嵌入图像。或者你可以看看下面 dict = {1:[0.0,0.0],2:[0.0,0.0]} dict[1] [0.0,0.0] 0.0 {1:[1.0,0.0],2:[0.0,0.0]} {1:[1.0,0.0],2:[7,0.0]} {1:[1.0,0.0],2:[7,3]} {1:[0.0,0.0],2:[0.0,0.0],3

我想更改dict of list中的一个值,但字典中列表索引相同的值都会更改。我在终端上玩过它,你们可以看到两个不同的显示器以相同的方式显示。

抱歉,我还不允许嵌入图像。或者你可以看看下面

dict = {1:[0.0,0.0],2:[0.0,0.0]}
dict[1]
[0.0,0.0]

0.0

{1:[1.0,0.0],2:[0.0,0.0]}

{1:[1.0,0.0],2:[7,0.0]}

{1:[1.0,0.0],2:[7,3]}

{1:[0.0,0.0],2:[0.0,0.0],3:[0.0,0.0],4:[0.0,0.0],5:[0.0,0.0],6:[0.0,0.0],7:[0.0,0.0],8:[0.0,0.0]}

{1:[0.0,6],2:[0.0,6],3:[0.0,6],4:[0.0,6],5:[0.0,6],6:[0.0,6],7:[0.0,6],8:[0.0,6]}

[0.0,6]

六,

[0.0,7]

{1:[0.0,7],2:[0.0,7],3:[0.0,7],4:[0.0,7],5:[0.0,7],6:[0.0,7],7:[0.0,7],8:[0.0,7]}

这将创建一个dict,其中所有键都关联到同一个列表
std_log
,因此修改一个(键,值)对当然会影响所有其他值(因为它们是相同的对象)。改为这样做:

thedict = {i+1: [0.0,0.0] for i in range(8)}

这将为每个键创建新的列表,您可以独立修改它们。

请提供一个列表,即使可以,也不要在堆栈上发布图像-overflow@U8-转发如果您想编辑此帖子,请确保您仍然可以区分命令(带$sign)和返回值(不带$sign)…@HuyHNguyen下一个问题请确保您的问题编辑正确。最好使用代码编辑器,而不是控制台…谢谢,朱利安。你的建议解决了问题。所以,如果我做这样的赋值,std_log是一个共同点。我很好奇,在这种情况下,std_log只是一个小列表,那么我们可以键入[0.0,0.0]。但是,如果std_log是一个大列表,那么我们如何分配std_log而不涉及公共引用问题呢?如果
std_log
是一个大列表(来自另一个例程的结果?),您仍然可以使用它的副本:
thedict={I+1:std_log[:](8) }
[:]
有效地创建了一个副本。但请注意,它可能不适用于其他结构,例如numpy数组。使用
.copy()
应该更安全…我明白了。谢谢Julien
dict[1][0]+=1
dict
dict[2][0] = 7
dict
dict[2][1] = 3
dict
std_log = [0.0,0.0]
thedict = {}
for i in range(8):
    thedict[i+1] = std_log
thedict
thedict[2][1] = 6
thedict
newvalue = thedict[2]
newvalue
newvalue[1]
newvalue[1] +=1
newvalue
thedict[2] = newvalue
thedict
std_log = [0.0,0.0]
for i in range(8):
    thedict[i+1] = std_log
thedict = {i+1: [0.0,0.0] for i in range(8)}