直观的栗子:
问题程序:
dict1={} list1=[] for va in range(5): dict1["num"]=va list1.append(dict1) print(list1)
问题输出:
[{\'num\': 4}, {\'num\': 4}, {\'num\': 4}, {\'num\': 4}, {\'num\': 4}]
问题原因:个人理解是因为在循环中,加入列表的是变量地址,导致后面变量值变化后,地址上的值全部变化;如果程序里没有循环,那么没有这个问题,可能是循环的赋值机制问题导致
解决方法:把字典的定义放在循环内,相当于每次循环都赋了新地址
问题解决的程序:
list1=[] for va in range(5): dict1 = {} dict1["num"]=va list1.append(dict1) print(list1)
问题解决的输出:
[{\'num\': 0}, {\'num\': 1}, {\'num\': 2}, {\'num\': 3}, {\'num\': 4}]
注意:变量字典初始化要和列表的添加元素句同等级