Skip to main content
 首页 » 编程设计

python之列表分配中的字典导致奇怪的输出

2025年05月04日22三少

<分区>

我有很多列表,其中包含许多字典。我只是在外部列表中的一个列表中分配给一个字典。但它会导致对外部列表中所有列表中的所有字典进行赋值。

代码:

CL=3*[0] 
DL=4*[0] 
di= { 
     'A':[], 
     'B':[], 
     'C':CL, 
     'D':DL 
    } 
R=[[],[]] 
R[0].append(di) 
R[1].append(di) 
 
def func(dd): 
    dd[0][0]['A'].append("BANANA") 
    dd[0][0]['B'].append("ELEPHANT") 
    dd[0][0]['C'][0]='BLUE' 
    dd[0][0]['D'][3]='ROCK' 
    dd[0][0]['D'][2]=1111 
 
print(R[0]) 
print(R[1]) 
 
print("\n") 
 
func(R) 
 
print(R[0]) 
print(R[1]) 

输出:

[{'A': [], 'C': [0, 0, 0], 'B': [], 'D': [0, 0, 0, 0]}]                                                                                                     
[{'A': [], 'C': [0, 0, 0], 'B': [], 'D': [0, 0, 0, 0]}]                                                                                                     
 
 
[{'A': ['BANANA'], 'C': ['BLUE', 0, 0], 'B': ['ELEPHANT'], 'D': [0, 0, 1111, 'ROCK']}]                                                                      
[{'A': ['BANANA'], 'C': ['BLUE', 0, 0], 'B': ['ELEPHANT'], 'D': [0, 0, 1111, 'ROCK']}] 

如您所见,即使我在外部列表的第一个列表中为字典赋值(func() 仅在 dd[0].. 上运行),两个列表都已赋值。

我的索引是否有任何错误?为什么会这样?