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

Comment inverser un dictionnaire avec des valeurs de liste en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 04:42:28932parcourir

How to invert a dictionary with list values in Python?

Inverser des dictionnaires avec des valeurs de liste

La tâche à accomplir est d'inverser un dictionnaire dont les valeurs sont des listes, en le transformant en un dictionnaire où chaque La valeur du dictionnaire d'origine devient une clé dans le nouveau dictionnaire, avec une liste des clés d'origine comme valeur.

Étant donné le dictionnaire d'index suivant :

index = {
    'Testfil2.txt': ['nisse', 'hue', 'abe', 'pind'],
    'Testfil1.txt': ['hue', 'abe', 'tosse', 'svend']}

Le dictionnaire inverse souhaité serait ressemble à ceci :

inverse = {
    'nisse': ['Testfil2.txt'],
    'hue': ['Testfil2.txt', 'Testfil1.txt'],
    'abe': ['Testfil2.txt', 'Testfil1.txt'],
    'pind': ['Testfil2.txt'], 
    'tosse': ['Testfil1.txt'],
    'svend': ['Testfil1.txt']}

Voici une solution pythonique qui résout le problème des listes comme valeurs :

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

Cette solution parcourt le dictionnaire d'origine, extrayant chaque paire clé-valeur et ses éléments. Il utilise la méthode setdefault() dans le dictionnaire inverse nouvellement créé, qui vérifie si la valeur (élément de la liste) est présente comme clé. Sinon, il crée une nouvelle clé avec une liste vide comme valeur. Si la clé existe déjà, elle ajoute la clé d'origine correspondante à la liste existante.

En parcourant tous les éléments du dictionnaire d'origine, cette solution crée avec succès le dictionnaire inversé avec les valeurs en double fusionnées et les clés d'origine comme valeurs. .

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