Maison > développement back-end > Tutoriel Python > Comment puis-je aplatir un dictionnaire imbriqué et compresser ses clés en Python ?

Comment puis-je aplatir un dictionnaire imbriqué et compresser ses clés en Python ?

Susan Sarandon
Libérer: 2024-12-31 06:01:13
original
562 Les gens l'ont consulté

How Can I Flatten a Nested Dictionary and Compress Its Keys in Python?

Aplatissement des dictionnaires imbriqués avec compression de touches

Lorsque vous travaillez avec des structures de données complexes dans votre code, il peut souvent être utile de les « aplatir » pour une manipulation plus facile. Cela est particulièrement vrai pour les dictionnaires imbriqués, où plusieurs niveaux de clés et de valeurs peuvent ajouter de la complexité à vos opérations. Dans cet article, nous allons explorer comment aplatir un dictionnaire imbriqué tout en compressant les clés.

Le problème

Considérez le dictionnaire imbriqué suivant :

{'a': 1,
 'c': {'a': 2,
       'b': {'x': 5,
             'y': 10}},
 'd': [1, 2, 3]}
Copier après la connexion

Le but est d'aplatir ce dictionnaire en quelque chose comme :

{'a': 1,
 'c_a': 2,
 'c_b_x': 5,
 'c_b_y': 10,
 'd': [1, 2, 3]}
Copier après la connexion

où les clés imbriquées sont compressées pour créer une clé unique et aplatie.

La solution

Pour aplatir le dictionnaire imbriqué, nous pouvons utiliser la fonction flatten() du module collections.abc. Cette fonction peut être définie comme suit :

def flatten(dictionary, parent_key='', separator='_'):
    items = []
    for key, value in dictionary.items():
        new_key = parent_key + separator + key if parent_key else key
        if isinstance(value, MutableMapping):
            items.extend(flatten(value, new_key, separator=separator).items())
        else:
            items.append((new_key, value))
    return dict(items)
Copier après la connexion

Utilisation de la fonction

Pour utiliser la fonction flatten(), transmettez simplement le dictionnaire imbriqué en argument. La fonction parcourra récursivement le dictionnaire, en l'"aplatissant" et en compressant les clés.

>>> flatten({'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y': 10}}, 'd': [1, 2, 3]})
{'a': 1, 'c_a': 2, 'c_b_x': 5, 'd': [1, 2, 3], 'c_b_y': 10}
Copier après la connexion

Comme vous pouvez le voir, le dictionnaire aplati a un seul niveau de clés, les clés étant compressées pour incorporer l'imbrication. structure du dictionnaire original.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal