Invertir diccionario con duplicados

Beginner

This tutorial is from open-source community. Access the source code

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:

  1. Crea un collections.defaultdict con list como el valor predeterminado para cada clave.
  2. Utiliza dictionary.items() en combinación con un bucle para mapear los valores del diccionario a claves utilizando dict.append().
  3. Utiliza dict() para convertir el collections.defaultdict en 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.