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!