提问人:invalid syntax 提问时间:8/17/2021 最后编辑:invalid syntax 更新时间:8/17/2021 访问量:84
当字典值未在 for 循环中重置时,列表值被重写 [duplicate]
list values being rewritten when dictionary values are not reseted inside for-loop [duplicate]
问:
我的代码发生了一些我不明白的奇怪事情。我有以下几行:
#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}]
...
换句话说,如果我不误解的话,字典中的字典值都会被重写。最后一个列表包含 csv 文件最后一列中的值。另一方面,如果我取消注释该行,也就是说,如果我在循环结束时重置字典,则列表的格式正确:camion
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}]
...
为什么会这样? 多谢!
答: 暂无答案
评论
diccionario = {'nombre': row[0], 'cajones': int(row[1]), 'precio': float(row[2])}