如何使用字典修复此函数以添加和打印添加的人员?

2024-05-16 14:44:41 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我正在尝试解决我编写的代码中的一个问题,出于某种原因,每当我调用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()

我把代码限制为只能添加两个人。因此,如果我写的第一个人,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 1,我的猜测是,不知何故添加的人没有被添加,而是被重写了,但我不知道为什么,如果我在main()中包含imprimir(),它会在我添加完一个人后打印每个人,但是这个想法是程序应该在我完成添加后打印所有添加的人


Tags: 代码inforinput人员maindefimprimir
1条回答
网友
1楼 · 发布于 2024-05-16 14:44:41

问题是添加具有相同键的项时,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

相关问题 更多 >