Cómo recorrer un diccionario en Python
Comprender cómo iterar a través de un diccionario de Python es valioso. Esta técnica le permite leer, manipular y generar el contenido de un diccionario. Hacer un bucle en Python es fácil. Pero los principiantes pueden encontrarlo un poco confuso, especialmente cuando lo usan con un iterable más complejo, como un diccionario.
Estas son algunas de las formas en que puede manejar un diccionario de Python usando bucles.
Recorrer claves y valores
Un diccionario en Python contiene pares clave-valor. Puede iterar a través de sus claves usando el método keys () :
myDict = {"A" : 2, "B" : 5, "C" : 6}
for i in myDict.keys():
print("Key"+" "+i)
Output:
Key A
Key B
Key C
Sin embargo, el código anterior es un poco más detallado de lo que necesita. Puede acceder a las claves llamándolas directamente desde myDict sin usar myDict.keys () .
Esto se debe a que un bucle for de Python elige las claves de forma predeterminada cuando ve un diccionario. Entonces puedes escribir el código anterior como este en su lugar:
for key in myDict:
print("Key"+ " " +key)
Output:
Key A
Key B
Key C
Para acceder a los valores, utilice el método values () correspondiente:
myDict = {"A" : 2, "B" : 5, "C" : 6}
for i in myDict.values():
print(i)
Output:
2
5
6
Del mismo modo, puede acceder a los valores directamente utilizando sus claves:
for key in myDict:
print(myDict[key])
Output:
2
5
6
Mientras itera a través de un diccionario, puede acceder a sus claves y valores al mismo tiempo. Puede hacer esto de dos maneras.
El primer método es iterar a través del diccionario y acceder a los valores usando el método dict [key] . Luego imprima cada par clave-valor dentro del ciclo:
for key in myDict:
print(key, "|", myDict[key])
Output:
A | 2
B | 5
C | 6
Alternativamente, puede acceder a las claves y valores simultáneamente usando el método items () :
for key, value in myDict.items():
print(key, "|", value)
Output:
A | 2
B | 5
C | 6
A veces, es posible que desee generar el resultado en orden inverso. Aquí se explica cómo hacerlo usando la función sorted () :
myDict = {"A" : 2, "B" : 5, "C" : 6}
for key, value in sorted(myDict.items(), reverse=True):
print(key, "|", value)
Output:
C | 6
B | 5
A | 2
Conversión de un diccionario en una lista
Convertir un diccionario en una lista mediante la iteración es tan fácil como transformar una lista en un diccionario .
Puede crear una lista que contenga una tupla individual para cada par clave-valor:
myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList.append((key, value))
print(myList)
Output: [('A', 'MUO'), ('B', 'Google'), ('C', 'Python')]
O puede convertir el diccionario en una lista anidada de pares clave-valor:
myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList.append([key, value])
print(myList)
Output: [['A', 'MUO'], ['B', 'Google'], ['C', 'Python']]
Y si desea transformar un diccionario en una lista ampliada o aplanada:
myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList+= key, value
print(myList)
Output: ['A', 'MUO', 'B', 'Google', 'C', 'Python']
Sumar los valores en un diccionario
Es fácil sumar todos los valores en un diccionario usando un bucle for :
myDict = {"A":6, "B":7, "C":9}
g = 0 # initilize a variable to store the running total
for i in myDict.values():
g += i # add each value to the total
print(g)
Output: 22
Este es un equivalente iterativo al uso de la función sum () , que es un iterador en sí mismo. Entonces puede agregar los valores usando sum () en lugar de hacer un bucle como lo hizo anteriormente:
summedValues = sum(myDict.values())
print(summedValues)
Output: 22
Bucle a través de un diccionario de Python anidado
Un diccionario anidado puede ser un poco confuso al principio. Pero es tan fácil como recorrer uno normal.
El siguiente código, por ejemplo, genera el contenido de cada lista en el diccionario:
myDict = {"A" : [1, 2, 3], "B" : [4, 5, 6]}
for i in myDict.keys():
print(myDict[i])
Output:
[1, 2, 3]
[4, 5, 6]
Como sucede en un diccionario normal, al recorrer todos los elementos se obtienen todos los pares clave-valor en tuplas individuales:
myDict = {"A" : [1, 2, 3], "B" : [4, 5, 6]}
for i in myDict.items():
print(i)
Output:
('A', [1, 2, 3])
('B', [4, 5, 6])
También puede ver valores específicos en un diccionario que contiene otros diccionarios. Pero tenga en cuenta que los valores de un diccionario complejo son los elementos de otros diccionarios que contiene. En esencia, un diccionario complejo contiene claves principales y secundarias.
Generemos los valores en el diccionario complejo a continuación para ver cómo funciona esto:
complexArray = {
"Detail" : {
"Name" : "Idowu",
"Logs" : 20,
"isAdmin" : True
},
"Activities" : {
"Inputs" : 14,
"Input Type" : "Video"
}
}
for value in complexArray.values():
print(value)
Output:
{'Name': 'Idowu', 'Logs': 20, 'isAdmin': True}
{'Inputs': 14, 'Input Type': 'Video'}
Con esta información, puede imprimir valores específicos del diccionario anterior.
Para ver los valores de Detail , por ejemplo:
for value in complexArray["Detail"].values():
print(value)
Output:
Idowu
20
True
Con un bucle for anidado, puede ver todos los valores de todas las claves secundarias:
for value in complexArray.values():
for i in value.values(): # get the values of each key in the child dictionaries
print(i)
Output:
Idowu
20
True
14
Video
Independientemente de su diccionario principal, la iteración anterior genera todos los valores secundarios del diccionario anidado.
Modificar elementos del diccionario
Dado que un diccionario es mutable, puede modificar su contenido a su gusto mientras lo recorre en iteración.
Por ejemplo, puede intercambiar valores por claves e insertar la salida en un nuevo diccionario:
myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
swappedDict = {}
for key, value in myDict.items():
swappedDict[value] = key
print(swappedDict)
Output: {'MUO': 'A', 'Google': 'B', 'Python': 'C'}
También puede lograr lo anterior usando el bucle for en la comprensión de un diccionario:
swappedDict = {value:key for key, value in myDict.items()}
print(swappedDict)
Output: {'MUO': 'A', 'Google': 'B', 'Python': 'C'}
También puede eliminar elementos específicos de un diccionario mientras lo recorre. Esta es una forma bastante práctica de eliminar duplicados.
El código de ejemplo a continuación elimina los elementos duplicados e inserta uno de ellos nuevamente después de iterar a través de la matriz:
myDict = {"A" : "MUO", "B" : "Google", "C" : "Python", "C" : "Python"}
for key in list(myDict.keys()):
if key == 'C':
del myDict[key]
myDict[key]="Python"
print(myDict)
Output: {'A': 'MUO', 'B': 'Google', 'C': 'Python'}
Juegue con los diccionarios de Python
Un diccionario de Python es una herramienta esencial para administrar datos en la memoria. Por lo tanto, una comprensión básica de la estructura de datos del diccionario, incluida la forma de recorrerla y obtener lo que desea, lo ayuda en escenarios de la vida real.
Y debido a que puede personalizar lo que sucede dentro de un bucle de Python, le permite manipular su salida. Sin embargo, iterar a través de un diccionario de Python es fácil una vez que comprende los conceptos básicos del bucle de Python.