Comment agréger une liste de dictionnaires

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce tutoriel explore des techniques complètes pour agréger des listes de dictionnaires en Python, offrant aux développeurs des stratégies puissantes pour traiter et transformer efficacement des structures de données complexes. En maîtrisant ces méthodes, les programmeurs peuvent simplifier les tâches de manipulation de données et écrire un code plus concis et plus lisible.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/ControlFlowGroup -.-> python/list_comprehensions("List Comprehensions") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/FunctionsGroup -.-> python/lambda_functions("Lambda Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/list_comprehensions -.-> lab-421938{{"Comment agréger une liste de dictionnaires"}} python/lists -.-> lab-421938{{"Comment agréger une liste de dictionnaires"}} python/dictionaries -.-> lab-421938{{"Comment agréger une liste de dictionnaires"}} python/function_definition -.-> lab-421938{{"Comment agréger une liste de dictionnaires"}} python/arguments_return -.-> lab-421938{{"Comment agréger une liste de dictionnaires"}} python/lambda_functions -.-> lab-421938{{"Comment agréger une liste de dictionnaires"}} python/data_collections -.-> lab-421938{{"Comment agréger une liste de dictionnaires"}} end

Principes de base des listes de dictionnaires

Qu'est-ce qu'une liste de dictionnaires?

Une liste de dictionnaires est une structure de données puissante en Python qui consiste en plusieurs dictionnaires stockés dans une seule liste. Elle vous permet de représenter des données complexes et structurées avec plusieurs entrées, chacune contenant des paires clé-valeur.

Structure de base et création

## Creating a list of dictionaries
students = [
    {"name": "Alice", "age": 22, "grade": "A"},
    {"name": "Bob", "age": 21, "grade": "B"},
    {"name": "Charlie", "age": 23, "grade": "A"}
]

Caractéristiques clés

graph TD A[Dictionary List Characteristics] A --> B[Mutable] A --> C[Ordered] A --> D[Nested Structure] A --> E[Flexible Data Types]

Opérations courantes

Opération Description Exemple
Accès Utilisez l'index et la clé students[0]["name"]
Ajout Ajoutez un nouveau dictionnaire students.append({"name": "David", "age": 20})
Modification Mettez à jour les valeurs du dictionnaire students[1]["grade"] = "A+"

Types de données dans les listes de dictionnaires

Les listes de dictionnaires peuvent contenir différents types de données :

  • Chaînes de caractères
  • Nombres
  • Listes
  • Dictionnaires imbriqués
  • Types mixtes

Exemple dans l'environnement Python de LabEx

## Practical example of dictionary list
products = [
    {"id": 1, "name": "Laptop", "price": 1000},
    {"id": 2, "name": "Smartphone", "price": 500},
    {"id": 3, "name": "Tablet", "price": 300}
]

## Iterating through the list
for product in products:
    print(f"Product: {product['name']}, Price: ${product['price']}")

Cette compréhension de base constitue la base pour des techniques plus avancées de manipulation et d'agrégation de listes de dictionnaires.

Méthodes d'agrégation de données

Aperçu des techniques d'agrégation

L'agrégation de données dans des listes de dictionnaires consiste à combiner, résumer et transformer des données à l'aide de diverses méthodes et techniques Python.

Principales méthodes d'agrégation

graph TD A[Data Aggregation Methods] A --> B[sum()] A --> C[max()] A --> D[min()] A --> E[filter()] A --> F[map()] A --> G[reduce()]

1. Utilisation de sum() pour l'agrégation numérique

## Summing numeric values
sales_data = [
    {"product": "Laptop", "price": 1000},
    {"product": "Phone", "price": 500},
    {"product": "Tablet", "price": 300}
]

total_sales = sum(item['price'] for item in sales_data)
print(f"Total Sales: ${total_sales}")

2. Filtrage de données avec les compréhensions de liste

## Filtering high-value products
high_value_products = [
    item for item in sales_data if item['price'] > 500
]

3. Groupement de données avec collections.defaultdict

from collections import defaultdict

## Grouping products by price range
def categorize_products(products):
    product_groups = defaultdict(list)
    for product in products:
        if product['price'] < 500:
            product_groups['low_price'].append(product)
        elif 500 <= product['price'] < 1000:
            product_groups['medium_price'].append(product)
        else:
            product_groups['high_price'].append(product)
    return product_groups

4. Comparaison des méthodes d'agrégation

Méthode Objectif Exemple Performance
sum() Calcul du total Somme des prix Rapide
max() Recherche du maximum Prix le plus élevé Modérée
min() Recherche du minimum Prix le plus bas Modérée
filter() Sélection conditionnelle Filtrage de produits Flexible

5. Agrégation avancée avec functools.reduce()

from functools import reduce

## Complex aggregation using reduce
def complex_aggregation(data):
    return reduce(
        lambda acc, item: acc + item['price'] * item.get('quantity', 1),
        data,
        0
    )

Bonnes pratiques dans l'environnement Python de LabEx

  • Utilisez les compréhensions de liste pour les transformations simples
  • Exploitez le module collections pour les groupements complexes
  • Choisissez la méthode d'agrégation appropriée en fonction de la structure des données
  • Tenez compte des performances pour les grands ensembles de données

Gestion des erreurs et validation

def safe_aggregation(data, key):
    try:
        return sum(item.get(key, 0) for item in data)
    except (TypeError, ValueError) as e:
        print(f"Aggregation error: {e}")
        return None

Ce survol complet propose de multiples stratégies pour aggréger efficacement les données dans des listes de dictionnaires, adaptées à divers cas d'utilisation et niveaux de complexité.

Exemples pratiques d'agrégation

1. Analyse des données de vente

sales_data = [
    {"product": "Laptop", "category": "Electronics", "price": 1000, "quantity": 5},
    {"product": "Phone", "category": "Electronics", "price": 500, "quantity": 10},
    {"product": "Book", "category": "Literature", "price": 20, "quantity": 50}
]

## Total revenue calculation
def calculate_total_revenue(data):
    return sum(item['price'] * item['quantity'] for item in data)

## Category-wise revenue
def category_revenue_breakdown(data):
    category_revenue = {}
    for item in data:
        category = item['category']
        revenue = item['price'] * item['quantity']
        category_revenue[category] = category_revenue.get(category, 0) + revenue
    return category_revenue

2. Suivi des performances des étudiants

graph TD A[Student Performance Analysis] A --> B[Average Score] A --> C[Top Performers] A --> D[Subject Breakdown]
students = [
    {"name": "Alice", "math": 85, "science": 90, "english": 88},
    {"name": "Bob", "math": 75, "science": 80, "english": 82},
    {"name": "Charlie", "math": 95, "science": 92, "english": 90}
]

## Calculate average scores
def calculate_subject_averages(students):
    return {
        "math": sum(student['math'] for student in students) / len(students),
        "science": sum(student['science'] for student in students) / len(students),
        "english": sum(student['english'] for student in students) / len(students)
    }

## Find top performers
def find_top_performers(students, subject, top_n=2):
    return sorted(students, key=lambda x: x[subject], reverse=True)[:top_n]

3. Gestion des stocks

Métrique Méthode de calcul Objectif
Stock total Somme des quantités Niveau de stock
Articles en faible stock Filtrer les articles en dessous du seuil Réapprovisionnement
Prix moyen Moyenne des prix des produits Stratégie de tarification
inventory = [
    {"name": "Shirt", "price": 25, "quantity": 100},
    {"name": "Pants", "price": 50, "quantity": 75},
    {"name": "Shoes", "price": 80, "quantity": 50}
]

## Identify low stock items
def find_low_stock_items(inventory, threshold=60):
    return [item for item in inventory if item['quantity'] < threshold]

## Calculate total inventory value
def calculate_inventory_value(inventory):
    return sum(item['price'] * item['quantity'] for item in inventory)

4. Transformation avancée des données

def transform_and_aggregate(data, transformation_func, aggregation_func):
    transformed_data = [transformation_func(item) for item in data]
    return aggregation_func(transformed_data)

## Example usage in LabEx Python environment
def normalize_price(item):
    return item['price'] / 100

def total_normalized_value(normalized_prices):
    return sum(normalized_prices)

5. Agrégation résistante aux erreurs

def safe_aggregation(data, key, default_value=0):
    try:
        return sum(item.get(key, default_value) for item in data)
    except Exception as e:
        print(f"Aggregation error: {e}")
        return None

Points clés à retenir

  • Utilisez les compréhensions de liste pour des transformations concises
  • Exploitez les méthodes des dictionnaires pour des agrégations flexibles
  • Mettez en œuvre la gestion des erreurs pour un traitement de données robuste
  • Choisissez les techniques d'agrégation appropriées en fonction de la structure des données

Ce guide complet présente des approches pratiques pour aggréger et analyser des données dans des listes de dictionnaires, mettant en évidence la polyvalence et l'efficacité de la manipulation de données en Python.

Résumé

Python propose plusieurs approches pour agréger des listes de dictionnaires, notamment en utilisant des fonctions intégrées, des compréhensions de liste et des bibliothèques spécialisées telles que pandas. Comprendre ces techniques permet aux développeurs de gérer facilement les transformations de données complexes, améliorant ainsi l'efficacité et la lisibilité du code dans divers scénarios de programmation.