Manipulation des structures de données imbriquées en Python

Techniques pour travailler avec des hiérarchies de données complexes

Apprenez à gérer et à manipuler des structures de données imbriquées en Python, y compris des listes de dictionnaires, des dictionnaires de listes et des objets profondément imbriqués. Ce guide fournit des techniques pratiques pour accéder, itérer et transformer des données imbriquées complexes.

Programmation
Auteur·rice
Affiliation
Date de publication

9 février 2024

Modifié

9 mai 2025

Mots clés

structures de données imbriquées Python, manipuler des données imbriquées, Listes imbriquées Python, Dictionnaires imbriqués Python

Introduction

Dans de nombreuses applications réelles, les données ne sont pas toujours plates. Les données sont souvent présentées dans des formats imbriqués, tels que des listes de dictionnaires, des dictionnaires contenant des listes ou des structures encore plus profondément imbriquées. La manipulation de ce type de données complexes peut s’avérer difficile, mais avec les bonnes techniques, vous pouvez accéder, itérer et transformer les données imbriquées de manière efficace. Ce tutoriel fournit des exemples pratiques pour vous aider à maîtriser ces compétences en Python.



Accès aux éléments imbriqués

Lorsque l’on traite des données imbriquées, la première étape consiste à savoir comment accéder aux éléments à différents niveaux. Prenons l’exemple simple d’un dictionnaire imbriqué représentant le dossier d’un étudiant:

#| label: nested-access
student = {
    "name": "Alice",
    "grades": {
        "math": 90,
        "science": 85,
        "history": 88
    },
    "activities": ["basketball", "chess", "volunteering"]
}

# Accès aux valeurs imbriquées:
math_grade = student["grades"]["math"]
first_activity = student["activities"][0]

print("Math Grade:", math_grade)
print("First Activity:", first_activity)

Dans cet exemple, nous accédons à la note de mathématiques à partir d’un dictionnaire imbriqué et à la première activité à partir d’une liste imbriquée.

Résultats:

Math Grade: 90
First Activity: basketball

Itération à travers des données imbriquées

Il est souvent nécessaire d’itérer sur des structures imbriquées pour extraire ou transformer des informations. Prenons l’exemple d’une liste d’enregistrements d’étudiants, où chaque enregistrement est un dictionnaire contenant des notes:

#| label: iterate-nested
students = [
    {"name": "Alice", "grades": {"math": 90, "science": 85}},
    {"name": "Bob", "grades": {"math": 75, "science": 80}},
    {"name": "Charlie", "grades": {"math": 88, "science": 92}}
]

# Extraire les notes de mathématiques de tous les élèves
math_grades = [student["grades"]["math"] for student in students]
print("Math Grades:", math_grades)

Cette compréhension de liste itère sur chaque enregistrement d’élève et extrait la note de mathématiques, démontrant ainsi une manière simple de parcourir des données imbriquées.

Résultats:

Math Grades: [90, 75, 88]

Transformer des données imbriquées

Parfois, vous devrez restructurer les données imbriquées pour les rendre plus faciles à manipuler. Par exemple, la conversion d’un dictionnaire de listes en une liste de dictionnaires peut s’avérer très utile.

#| label: transform-nested
data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["New York", "Los Angeles", "Chicago"]
}

# Convertir en une liste de dictionnaires
flattened_data = [dict(zip(data, t)) for t in zip(*data.values())]
print("Flattened Data:", flattened_data)

Cette transformation utilise la fonction zip et les compréhensions de dictionnaire pour reformater la structure de données imbriquées dans un format plus utilisable.

Résultats:

Flattened Data: [
  {'name': 'Alice', 'age': 25, 'city': 'New York'}, 
  {'name': 'Bob', 'age': 30, 'city': 'Los Angeles'}, 
  {'name': 'Charlie', 'age': 35, 'city': 'Chicago'}
  ]

Combiner plusieurs opérations

Dans des scénarios réels, vous pouvez avoir besoin d’effectuer plusieurs opérations sur des données imbriquées. Par exemple, fusionner deux dictionnaires, puis filtrer en fonction d’une condition:

#| label: combined-operations
data1 = {"Alice": 25, "Bob": 30}
data2 = {"Charlie": 35, "Bob": 32}

# Fusionner des dictionnaires (les valeurs de data2 écrasent celles de data1 pour les clés dupliquées)
merged_data = {**data1, **data2}

# Filtrer les entrées dont l'âge est inférieur à 30
filtered_names = [name for name, age in merged_data.items() if age >= 30]
print("Filtered Names:", filtered_names)

Cet exemple illustre la fusion de deux dictionnaires et le filtrage des clés en fonction des valeurs associées.

Résultats:

Filtered Names: ['Bob', 'Charlie']

Conclusion

La manipulation de structures de données imbriquées est une compétence essentielle en Python, en particulier lorsque l’on travaille avec des données complexes du monde réel. En apprenant à accéder aux données imbriquées, à les itérer et à les transformer, vous pouvez écrire un code plus efficace et plus lisible. Expérimentez ces exemples et adaptez-les à vos besoins spécifiques pour maîtriser l’art de gérer des hiérarchies de données complexes.

Plus d’informations

Bon codage et bonne exploration des structures de données complexes et imbriquées en Python!

Explorer d’autres articles

Note

Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.

placeholder

placeholder
Aucun article correspondant
Retour au sommet

Réutilisation

Citation

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Manipulation des structures de données imbriquées en Python},
  date = {2024-02-09},
  url = {https://www.datanovia.com/fr/learn/programming/python/additional-tutorials/nested-data-structures.html},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
Kassambara, Alboukadel. 2024. “Manipulation des structures de données imbriquées en Python.” February 9, 2024. https://www.datanovia.com/fr/learn/programming/python/additional-tutorials/nested-data-structures.html.