Maison >interface Web >js tutoriel >Comment la méthode « groupby » de Python peut-elle regrouper et agréger efficacement les données de tableaux d'objets ?
Regroupement d'objets dans des tableaux à l'aide de la méthode GroupBy
La puissante méthode groupby de Python permet un regroupement efficace d'objets en fonction des attributs sélectionnés. Si vous devez effectuer de telles opérations de regroupement, groupby offre une solution pratique.
Par exemple, considérons le tableau d'objets suivant :
[ { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" }, { Phase: "Phase 1", Step: "Step 1", Task: "Task 2", Value: "10" }, { Phase: "Phase 1", Step: "Step 2", Task: "Task 1", Value: "15" }, { Phase: "Phase 1", Step: "Step 2", Task: "Task 2", Value: "20" }, { Phase: "Phase 2", Step: "Step 1", Task: "Task 1", Value: "25" }, { Phase: "Phase 2", Step: "Step 1", Task: "Task 2", Value: "30" }, { Phase: "Phase 2", Step: "Step 2", Task: "Task 1", Value: "35" }, { Phase: "Phase 2", Step: "Step 2", Task: "Task 2", Value: "40" } ]
Pour regrouper les objets par phase et calculer la somme de valeur, nous utilisons :
from itertools import groupby def sum_value(objects): return sum(int(obj["Value"]) for obj in objects) objects.sort(key=lambda obj: obj["Phase"]) grouped_by_phase = groupby(objects, key=lambda obj: obj["Phase"]) result = [{ "Phase": phase, "Value": sum_value(objects) } for phase, objects in grouped_by_phase] print(result)
Cela donne le résultat souhaité :
[{"Phase": "Phase 1", "Value": 50}, {"Phase": "Phase 2", "Value": 130}]
Alternativement, pour regrouper par à la fois Phase et Step, nous pouvons utiliser plusieurs niveaux de groupby :
grouped_by_phase_and_step = groupby(objects, key=lambda obj: (obj["Phase"], obj["Step"])) result = [{ "Phase": phase, "Step": step, "Value": sum_value(objects) } for (phase, step), objects in grouped_by_phase_and_step] print(result)
Cela renvoie :
[{"Phase": "Phase 1", "Step": "Step 1", "Value": 15}, {"Phase": "Phase 1", "Step": "Step 2", "Value": 35}, {"Phase": "Phase 2", "Step": "Step 1", "Value": 55}, {"Phase": "Phase 2", "Step": "Step 2", "Value": 75}]
Avec la méthode groupby polyvalente de Python, vous pouvez facilement et efficacement regrouper et agréger les données de tableaux d'objets, répondant à vos différentes exigences de regroupement.
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!