Python - Lista de diccionarios

 
Vista:
Imágen de perfil de Santiago
Val: 37
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Lista de diccionarios

Publicado por Santiago (13 intervenciones) el 09/01/2021 23:50:34
Hola:

Estoy tratando de meter varios diccionarios en una lista, pero cuando los imprimo, siempre me sale el último. ¿Podéis decirme dónde puede estar el problema?

Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
lista = []
dicc = {}
 
# Creamos e inicializamos la variable de control del bucle while siguiente
seguir="si"
 
# Pedimos datos en tanto en cuanto no quiera terminar de introducirlos
while seguir=="si":
    # Pedimos los datos
    dict = {}
    dicc['nombre']   = input("Nombre: ")
    dicc['edad']    = input("Edad: ")
    print(dicc)
    # Añadimos los datos a una lista
    lista.append(dicc)
    # Preguntamos si quiere meter datos
    seguir=input("Quieres introducir más datos(si/no): ")
 
# Mostramos los gastos introducidos
print("Datos:")
for d in lista:
    print(d['nombre'] + '; ' + d['edad'])
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Lista de diccionarios

Publicado por Jaime (136 intervenciones) el 10/01/2021 00:09:53
Hola amigo. Lo que pasa es que estás guardando la misma instancia en memoria del diccionario. La solución es que guardes una copia del diccionario

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
lista = []
 
dicc = {}
 
 
# Creamos e inicializamos la variable de control del bucle while siguiente
 
seguir = "si"
 
 
# Pedimos datos en tanto en cuanto no quiera terminar de introducirlos
 
while seguir == "si":
 
    # Pedimos los datos
 
    dict = {}
 
    dicc['nombre'] = input("Nombre: ")
 
    dicc['edad'] = input("Edad: ")
 
 
    # Añadimos los datos a una lista
 
    lista.append(dicc.copy())   #LA SOLUCION ES GUARDAR UNA COPIA DEL DICT
 
    # Preguntamos si quiere meter datos
 
    seguir = input("Quieres introducir más datos(si/no): ")
 
 
# Mostramos los gastos introducidos
 
print("Datos:")
 
for d in lista:
 
    print(d['nombre'] + '; ' + d['edad'])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Santiago
Val: 37
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Lista de diccionarios

Publicado por Santiago (13 intervenciones) el 10/01/2021 00:11:37
Hola Jaime.

Bueno, lo encontré. En realidad es un error porque inicializo dict = {} en lugar de dicc = {}. Error de escritura.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar