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 :
- Créez un
collections.defaultdictaveclistcomme valeur par défaut pour chaque clé. - Utilisez
dictionary.items()en combinaison avec une boucle pour mapper les valeurs du dictionnaire aux clés en utilisantdict.append(). - Utilisez
dict()pour convertir lecollections.defaultdicten 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.