Diccionarios de Python
En Python, un diccionario es una colección ordenada (a partir de Python > 3.7) de pares de clave: valor.
De la documentación de Python 3
Las operaciones principales en un diccionario son almacenar un valor con alguna clave y extraer el valor dada la clave. También es posible eliminar un par clave:valor con del.
Ejemplo de Diccionario:
# Diccionario: colección de pares clave-valor
mi_gato = {
'size': 'fat', # clave: 'size', valor: 'fat'
'color': 'gray', # clave: 'color', valor: 'gray'
'disposition': 'loud' # clave: 'disposition', valor: 'loud'
}
Establecer clave, valor usando el operador de subíndice []
# Añadir o actualizar entrada de diccionario usando el operador de subíndice
mi_gato = {
'size': 'fat',
'color': 'gray',
'disposition': 'loud',
}
mi_gato['age_years'] = 2 # Añadir nuevo par clave-valor
print(mi_gato)
{'size': 'fat', 'color': 'gray', 'disposition': 'loud', 'age_years': 2}
Obtener valor usando el operador de subíndice []
En caso de que la clave no esté presente en el diccionario, se genera un KeyError.
mi_gato = {
'size': 'fat',
'color': 'gray',
'disposition': 'loud',
}
print(mi_gato['size'])
fat
print(mi_gato['eye_color'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'eye_color'
values()
El método values() obtiene los valores del diccionario:
# Iterar sobre los valores del diccionario usando el método .values()
mascota = {'color': 'red', 'age': 42}
for value in mascota.values(): # Bucle a través de todos los valores
print(value)
red
42
keys()
El método keys() obtiene las claves del diccionario:
# Iterar sobre las claves del diccionario usando el método .keys()
mascota = {'color': 'red', 'age': 42}
for key in mascota.keys(): # Bucle a través de todas las claves
print(key)
color
age
No hay necesidad de usar .keys() ya que por defecto se iterará sobre las claves:
# Iterar sobre el diccionario directamente itera sobre las claves (comportamiento por defecto)
mascota = {'color': 'red', 'age': 42}
for key in mascota: # Equivalente a for key in mascota.keys()
print(key)
color
age
items()
El método items() obtiene los elementos de un diccionario y los devuelve como una Tupla:
mascota = {'color': 'red', 'age': 42}
for item in mascota.items():
print(item)
('color', 'red')
('age', 42)
Usando los métodos keys(), values() e items(), un bucle for puede iterar sobre las claves, los valores o los pares clave-valor en un diccionario, respectivamente.
# Iterar sobre pares clave-valor usando el método .items()
mascota = {'color': 'red', 'age': 42}
for key, value in mascota.items(): # Desempaquetar tupla en clave y valor
print(f'Key: {key} Value: {value}')
Key: color Value: red
Key: age Value: 42
get()
El método get() devuelve el valor de un elemento con la clave dada. Si la clave no existe, devuelve None:
# Método .get(): recuperar valor de forma segura, devuelve None si la clave no existe
esposa = {'name': 'Rose', 'age': 33}
f'My wife name is {esposa.get("name")}' # Devuelve 'Rose'
'My wife name is Rose'
f'She is {esposa.get("age")} years old.'
'She is 33 years old.'
f'She is deeply in love with {esposa.get("husband")}'
'She is deeply in love with None'
También puedes cambiar el valor predeterminado None por uno de tu elección:
esposa = {'name': 'Rose', 'age': 33}
f'She is deeply in love with {esposa.get("husband", "lover")}'
'She is deeply in love with lover'
Añadir elementos con setdefault()
Es posible añadir un elemento a un diccionario de esta manera:
esposa = {'name': 'Rose', 'age': 33}
if 'has_hair' not in esposa:
esposa['has_hair'] = True
Usando el método setdefault, podemos hacer el mismo código más corto:
esposa = {'name': 'Rose', 'age': 33}
esposa.setdefault('has_hair', True)
esposa
{'name': 'Rose', 'age': 33, 'has_hair': True}
Eliminar Elementos
pop()
El método pop() elimina y devuelve un elemento basado en una clave dada.
esposa = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
esposa.pop('age')
33
esposa
{'name': 'Rose', 'hair': 'brown'}
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
pop() cuando se llama en un diccionario?popitem()
El método popitem() elimina el último elemento en un diccionario y lo devuelve.
esposa = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
esposa.popitem()
('hair', 'brown')
esposa
{'name': 'Rose', 'age': 33}
del
El método del elimina un elemento basado en una clave dada.
esposa = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
del esposa['age']
esposa
{'name': 'Rose', 'hair': 'brown'}
clear()
El método clear() elimina todos los elementos de un diccionario.
esposa = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
esposa.clear()
esposa
{}
Comprobar claves en un Diccionario
persona = {'name': 'Rose', 'age': 33}
'name' in persona.keys()
True
'height' in persona.keys()
False
'skin' in persona # Puedes omitir keys()
False
Comprobar valores en un Diccionario
persona = {'name': 'Rose', 'age': 33}
'Rose' in persona.values()
True
33 in persona.values()
True
Impresión Bonita (Pretty Printing)
import pprint
esposa = {'name': 'Rose', 'age': 33, 'has_hair': True, 'hair_color': 'brown', 'height': 1.6, 'eye_color': 'brown'}
pprint.pprint(esposa)
{'age': 33,
'eye_color': 'brown',
'hair_color': 'brown',
'has_hair': True,
'height': 1.6,
'name': 'Rose'}
Fusionar dos diccionarios
Para Python 3.5+:
dict_a = {'a': 1, 'b': 2}
dict_b = {'b': 3, 'c': 4}
dict_c = {**dict_b, **dict_a}
dict_c
{'a': 1, 'b': 3, 'c': 4}
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
{**dict_b, **dict_a}, ¿qué sucede si ambos diccionarios tienen la misma clave?dict_b sobrescribe el valor de dict_adict_a sobrescribe el valor de dict_b