resueltos recorrer lista elementos ejercicios diccionarios diccionario dentro anidados agregar python python-3.x dictionary enumerate

recorrer - lista de diccionarios python



enumerar() para diccionario en python (7)

  1. Iterar sobre un dict de Python significa iterar sobre sus claves exactamente de la misma manera que con dict.keys()
  2. El orden de las claves está determinado por el código de implementación y no puede esperar algún orden específico:

    Las claves y los valores se repiten en un orden arbitrario que no es aleatorio, varía según las implementaciones de Python y depende del historial de inserciones y eliminaciones del diccionario. Si las vistas de claves, valores y elementos se repiten sin modificaciones al diccionario, el orden de los elementos corresponderá directamente.

Por eso ves los índices 0 a 7 en la primera columna. Se producen por enumerate y siempre están en el orden correcto. Además, verá las teclas 0 a 7 del dictado en la segunda columna. Ellos no están ordenados.

Sé que utilizamos enumerate para iterar una lista, pero lo probé en un diccionario y no dio un error.

CÓDIGO:

enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7} for i, j in enumerate(enumm): print(i, j)

SALIDA:

0 0 1 1 2 2 3 4 4 5 5 6 6 7

¿Alguien puede explicar la salida?


En la parte superior de las respuestas ya proporcionadas, hay un patrón muy agradable en Python que le permite enumerar las claves y los valores de un diccionario.

En el caso normal se enumeran las claves del diccionario:

example_dict = {1:''a'', 2:''b'', 3:''c'', 4:''d''} for i, k in enumerate(example_dict): print(i, k)

Qué salidas:

0 1 1 2 2 3 3 4

Pero si desea enumerar mediante claves y valores, esta es la forma:

for i, (k, v) in enumerate(example_dict.items()): print(i, k, v)

Qué salidas:

0 1 a 1 2 b 2 3 c 3 4 d


Eso seguro debe parecer confuso. Así que esto es lo que está pasando. El primer valor de enumerar (en este caso i) devuelve el siguiente valor de índice a partir de 0, por lo que 0, 1, 2, 3, ... Siempre devolverá estos números independientemente de lo que haya en el diccionario. El segundo valor de enumerar (en este caso j) es devolver los valores en su diccionario / enumm (lo llamamos un diccionario en Python). Lo que realmente quieres hacer es con lo que roadrunner66 respondió.


La primera columna de salida es el índice de cada elemento enumm y la segunda es sus claves. Si desea iterar su diccionario, use .items ():

for k, v in enumm.items(): print(k, v)

Y la salida debería verse como:

0 1 1 2 2 3 4 4 5 5 6 6 7 7


Python3:

Una solución:

enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7} for i, k in enumerate(enumm): print("{}) d.key={}, d.value={}".format(i, k, enumm[k]))

Output: 0) enumm.key=0, enumm.value=1 1) enumm.key=1, enumm.value=2 2) enumm.key=2, enumm.value=3 3) enumm.key=4, enumm.value=4 4) enumm.key=5, enumm.value=5 5) enumm.key=6, enumm.value=6 6) enumm.key=7, enumm.value=7

Otro ejemplo:

d = {1 : {''a'': 1, ''b'' : 2, ''c'' : 3}, 2 : {''a'': 10, ''b'' : 20, ''c'' : 30} } for i, k in enumerate(d): print("{}) key={}, value={}".format(i, k, d[k])

Output: 0) key=1, value={''a'': 1, ''b'': 2, ''c'': 3} 1) key=2, value={''a'': 10, ''b'': 20, ''c'': 30}


enumerate() cuando se trabaja en la lista en realidad proporciona el índice y el valor de los elementos dentro de la lista. Por ejemplo:

l = [1, 2, 3, 4, 5, 6, 7, 8, 9] for i, j in enumerate(list): print(i, j)

da

0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9

donde la primera columna denota el índice del elemento y la segunda columna denota los propios elementos.

En un diccionario

enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7} for i, j in enumerate(enumm): print(i, j)

da la salida

0 0 1 1 2 2 3 4 4 5 5 6 6 7

donde la primera columna proporciona el índice de los pares key:value y la segunda columna denota las keys del diccionario enumm .

Entonces, si desea que la primera columna sean las keys y la segunda columna como values , mejor pruebe con dict.iteritems() (Python 2) o dict.items() (Python 3)

for i, j in enumm.items(): print(i, j)

salida

0 1 1 2 2 3 4 4 5 5 6 6 7 7

Voila


for k,v in dict.iteritems(): print(k,v)