Inverser un dictionnaire avec doublons

PythonPythonBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Les dictionnaires sont une structure de données fondamentale en Python qui vous permettent de stocker des paires clé-valeur. Parfois, vous devrez peut-être inverser un dictionnaire, ce qui signifie échanger les clés et les valeurs de sorte que les valeurs deviennent les clés et les clés deviennent les valeurs. Dans ce défi, vous devrez écrire une fonction qui inverse un dictionnaire avec des valeurs hachables non uniques.

Inverser un dictionnaire

Écrivez une fonction invert_dictionary(obj) qui prend un dictionnaire obj en entrée et renvoie un nouveau dictionnaire avec les clés et les valeurs inversées. Le dictionnaire d'entrée aura des valeurs hachables non uniques. Si deux ou plusieurs clés ont la même valeur, la fonction devrait ajouter les clés à une liste dans le dictionnaire de sortie.

Pour résoudre ce problème, vous pouvez suivre ces étapes :

  1. Créez un collections.defaultdict avec list comme valeur par défaut pour chaque clé.
  2. Utilisez dictionary.items() en combinaison avec une boucle pour mapper les valeurs du dictionnaire aux clés en utilisant dict.append().
  3. Utilisez dict() pour convertir le collections.defaultdict en un dictionnaire classique.

Signature de la fonction : 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'] }

Résumé

Dans ce défi, vous avez appris à inverser un dictionnaire avec des valeurs hachables non uniques. Vous avez utilisé un collections.defaultdict avec list comme valeur par défaut pour chaque clé, puis vous avez associé les valeurs du dictionnaire aux clés en utilisant dict.append(). Enfin, vous avez utilisé dict() pour convertir le collections.defaultdict en un dictionnaire classique.