Maison  >  Article  >  développement back-end  >  Comment inverser un dictionnaire avec des valeurs de liste ?

Comment inverser un dictionnaire avec des valeurs de liste ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 04:23:02770parcourir

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 de mise en œuvre de cette approche :

<code class="python">inverse = {}
for k,v in index.items():
    for x in v:
        inverse.setdefault(x, []).append(k)</code>

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 l'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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn