目前我试图解决我写的代码中的问题,出于某种原因,每当我调用imprimir()时,它只会显示最后添加的人,而它应该显示所有添加的人。
libro = {}
def agregar(rut, nombre, edad):
estudiante = {}
estudiante['rut'] = rut
estudiante['nombre'] = nombre
estudiante['edad'] = edad
libro['rut'] = estudiante
def imprimir():
for rut in libro:
estudiante = libro[rut]
print(estudiante['rut'], estudiante['nombre'], estudiante['edad'])
def main():
contador = 0
while contador < 2:
rut = input("rut: ")
nombre = input("nombre: ")
edad = input("Edad: ")
contador = contador + 1
agregar(rut, nombre, edad)
imprimir()
main()
我的代码仅限于2个人添加。所以,如果对于我写的第一个人,rut = 1,nombre = 1和edad = 1,对于第二个人,rut = 2,nombre = 2和edad = 2.当使用main()时,它应该打印: 1 1 1 2 2 2 但它只是打印2 2 2与1 1 1未找到,我的猜测是,不知何故添加的人没有添加,而是改写,但我不能找到原因,如果我包括imprimir()在主要的()内它会在我完成添加一个人后立即打印每个人,但我认为程序应该在添加完毕后打印所有添加的人。
答案 0 :(得分:1)
问题是您使用相同的密钥添加项目,因此dict
只会覆盖您添加的每个条目的最后一个值...
libro = {}
def agregar(rut, nombre, edad):
estudiante = {}
estudiante['rut'] = rut
estudiante['nombre'] = nombre
estudiante['edad'] = edad
# this would override the previous entry since it's always the same key
libro['rut'] = estudiante
# use a key that is unique and all entries will be preserved
libro[rut] = estudiante
# or for some truly unique keys
libro[str(uuid.uuid4())] = estudiante