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:
= student["grades"]["math"]
math_grade = student["activities"][0]
first_activity
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
= [student["grades"]["math"] for student in students]
math_grades 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
= [dict(zip(data, t)) for t in zip(*data.values())]
flattened_data 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
= {"Alice": 25, "Bob": 30}
data1 = {"Charlie": 35, "Bob": 32}
data2
# Fusionner des dictionnaires (les valeurs de data2 écrasent celles de data1 pour les clés dupliquées)
= {**data1, **data2}
merged_data
# Filtrer les entrées dont l'âge est inférieur à 30
= [name for name, age in merged_data.items() if age >= 30]
filtered_names 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
- Guide complet des structures de données Python
- Opérations avancées sur les structures de données en Python
- Introduction aux expressions régulières en Python
Bon codage et bonne exploration des structures de données complexes et imbriquées en Python!
Explorer d’autres articles
Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.
Réutilisation
Citation
@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}
}