给定以下CSV文件,我尝试使用for循环和append
函数获取列表中的词典:
Margherita , 5.5
Salami , 7.0
Schinken , 7.0
我的代码是:
Pizzadict = {}
Pizzalist = []
with open("preisliste.txt", 'r') as textfile:
preisenlist_csv = csv.reader(textfile)
for ind, rows in enumerate(preisenlist_csv):
Pizzadict.clear()
Pizzadict[rows[0]] = rows[1]
Pizzalist.append(Pizzadict)
print(Pizzalist)
输出:
[{'Schinken ': ' 7.0'}, {'Schinken ': ' 7.0'}, {'Schinken ': ' 7.0'}]
那么,为什么列表只需要最后一本词典,然后打印3次呢? 我想要一份清单
[1.dict, 2. dict, 3.dict]
而不是
[3.dict, 3.dict, 3.dict]
Pizzalist.append(Pizzadict)
将引用附加到同一dictionary对象。你知道吗例如,当您使用
Pizzadict[rows[0]] = rows[1]
或Pizzadict.clear()
对其进行变异时,这一变化将由三个引用反映出来。你知道吗您需要附加词典的副本:
或者每次只构建一个新的dict:
因为您将同一个字典附加3次,所以字典是引用类型,所以您的列表将对字典的引用存储3次,而不是单个字典,而是在for循环中创建新字典。你知道吗
试试这个:
输出:
相关问题 更多 >
编程相关推荐