Maison > développement back-end > Tutoriel Python > Comment puis-je aplatir les dictionnaires imbriqués et compresser leurs clés en Python ?

Comment puis-je aplatir les dictionnaires imbriqués et compresser leurs clés en Python ?

Mary-Kate Olsen
Libérer: 2024-12-14 00:53:10
original
190 Les gens l'ont consulté

How Can I Flatten Nested Dictionaries and Compress Their Keys in Python?

Aplatissement des dictionnaires imbriqués : compression des clés

Dans le domaine de la manipulation de données, rencontrer des dictionnaires imbriqués peut souvent poser un défi lorsqu'il s'agit d'accéder données. Un scénario courant est la nécessité d’aplatir ces dictionnaires complexes, créant ainsi une structure plus simple avec des clés compressées. Comprendre comment effectuer cette tâche efficacement est crucial pour une analyse et une gestion efficaces des données.

Considérons un dictionnaire imbriqué au format suivant :

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

Notre objectif est de transformer ce dictionnaire en un dictionnaire aplati. version où les clés sont compressées pour refléter leur structure hiérarchique :

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

Pour y parvenir, nous pouvons exploiter un algorithme d'aplatissement. L'approche consiste à parcourir le dictionnaire, à créer de nouvelles clés en concaténant les clés parents avec des clés enfants et un séparateur, et finalement à générer un nouveau dictionnaire aplati.

La mise en œuvre de cet algorithme en Python implique l'utilisation de la base collections.abc.MutableMapping. classe pour gérer différents types de dictionnaires. Voici une implémentation Python :

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)

>>> 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

En utilisant cet algorithme, nous pouvons aplatir efficacement les dictionnaires imbriqués, en compressant les clés pour fournir une structure de données simplifiée pour une gestion et une analyse plus efficaces des données.

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