如何使用字典修复此功能以添加和打印添加的人?

时间:2018-05-09 16:27:25

标签: python python-3.x function dictionary

目前我试图解决我写的代码中的问题,出于某种原因,每当我调用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()在主要的()内它会在我完成添加一个人后立即打印每个人,但我认为程序应该在添加完毕后打印所有添加的人。

1 个答案:

答案 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