Introducción
Los diccionarios son una estructura de datos fundamental en Python que te permite almacenar pares de claves-valores. A veces, es posible que necesites invertir un diccionario, lo que significa intercambiar las claves y los valores para que los valores pasen a ser las claves y las claves pasen a ser los valores. En este desafío, te encomendaré escribir una función que invierta un diccionario con valores hashables no únicos.
Invertir un diccionario
Escribe una función invert_dictionary(obj) que tome un diccionario obj como entrada y devuelva un nuevo diccionario con las claves y los valores invertidos. El diccionario de entrada tendrá valores hashables no únicos. Si dos o más claves tienen el mismo valor, la función debe agregar las claves a una lista en el diccionario de salida.
Para resolver este problema, puedes seguir estos pasos:
- Crea un
collections.defaultdictconlistcomo el valor predeterminado para cada clave. - Utiliza
dictionary.items()en combinación con un bucle para mapear los valores del diccionario a claves utilizandodict.append(). - Utiliza
dict()para convertir elcollections.defaultdicten un diccionario regular.
Firma de la función: def invert_dictionary(obj: dict) -> dict:
from collections import defaultdict
def collect_dictionary(obj):
inv_obj = defaultdict(list)
for key, value in obj.items():
inv_obj[value].append(key)
return dict(inv_obj)
ages = {
'Peter': 10,
'Isabel': 10,
'Anna': 9,
}
collect_dictionary(ages) ## { 10: ['Peter', 'Isabel'], 9: ['Anna'] }
Resumen
En este desafío, aprendiste cómo invertir un diccionario con valores hashables no únicos. Utilizaste un collections.defaultdict con list como el valor predeterminado para cada clave, y luego mapeaste los valores del diccionario a claves utilizando dict.append(). Finalmente, utilizaste dict() para convertir el collections.defaultdict en un diccionario regular.