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
Mary-Kate Olsenoriginal
2024-12-14 00:53:10191parcourir

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

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

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}

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!

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