"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment inverser un dictionnaire avec des valeurs de liste ?

Comment inverser un dictionnaire avec des valeurs de liste ?

Publié le 2024-11-07
Parcourir:862

How Can You Invert a Dictionary with List Values?

Inverser des dictionnaires avec des valeurs de liste : une solution

Dans cet article, nous explorons le défi de l'inversion d'un dictionnaire avec des valeurs de liste. Étant donné un dictionnaire d'index où les clés sont des noms de fichiers et les valeurs sont des listes de mots apparaissant dans ces fichiers, nous visons à créer un dictionnaire inversé où les mots sont des clés et les valeurs sont des listes de noms de fichiers.

La fonction d'inversion fournie, invert_dict, n'est pas applicable aux dictionnaires avec des valeurs de liste comme clés, car il échoue avec un "TypeError: unhashable type: 'list'". Cette limitation vient du fait que les clés des dictionnaires doivent être hachables et que les listes ne le sont pas.

Pour surmonter cet obstacle, nous pouvons utiliser une approche personnalisée qui parcourt le dictionnaire d'origine et crée un nouveau dictionnaire en utilisant setdefault. . Plus précisément, nous parcourons les listes de valeurs de chaque clé dans le dictionnaire d'origine et ajoutons les clés correspondantes comme valeurs pour ces mots dans le nouveau dictionnaire inversé.

Voici un exemple d'implémentation de cette approche :

inverse = {}
for k,v in index.items():
    for x in v:
        inverse.setdefault(x, []).append(k)

Cette solution gère les valeurs de liste dans le dictionnaire d'origine en utilisant la méthode setdefault pour créer une nouvelle liste si la clé n'existe pas dans le dictionnaire inversé, ou ajouter à une liste existante si la clé est déjà présente.

En conséquence, nous obtenons un dictionnaire inversé où les mots sont des clés et les valeurs sont des listes de noms de fichiers.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3