我的代码发生了一些奇怪的事情,我不明白。我有以下几行:
#informe.py
import csv
from pprint import pprint
def leer_camion(nombre_archivo):
diccionario = {}
camion = []
with open(nombre_archivo, 'rt') as f:
rows = csv.reader(f)
headers = next(rows)
for row in rows:
diccionario['nombre'] = row[0]
diccionario['cajones'] = int(row[1])
diccionario['precio'] = float(row[2])
camion.append(diccionario)
pprint(camion)
#diccionario = {}
return camion
lista = leer_camion('../Data/camion.csv')
我的问题是,如果我不在for
末尾重置字典,列表的形式如下:
[{'cajones': 100, 'nombre': 'Lima', 'precio': 32.2}]
[{'cajones': 50, 'nombre': 'Naranja', 'precio': 91.1},
{'cajones': 50, 'nombre': 'Naranja', 'precio': 91.1}]
[{'cajones': 150, 'nombre': 'Caqui', 'precio': 103.44},
{'cajones': 150, 'nombre': 'Caqui', 'precio': 103.44},
{'cajones': 150, 'nombre': 'Caqui', 'precio': 103.44}]
...
换句话说,如果我没有误解的话,字典值在字典和camion
中都会被重写。最后一个列表包含csv文件最后一列中的值。另一方面,如果我取消对dictionary = {}
行的注释,也就是说,如果我在循环结束时重置字典,则列表的格式正确:
[{'cajones': 100, 'nombre': 'Lima', 'precio': 32.2}]
[{'cajones': 100, 'nombre': 'Lima', 'precio': 32.2},
{'cajones': 50, 'nombre': 'Naranja', 'precio': 91.1}]
[{'cajones': 100, 'nombre': 'Lima', 'precio': 32.2},
{'cajones': 50, 'nombre': 'Naranja', 'precio': 91.1},
{'cajones': 150, 'nombre': 'Caqui', 'precio': 103.44}]
...
为什么会发生这种情况? 非常感谢
目前没有回答
相关问题 更多 >
编程相关推荐