GroupBy 메서드를 사용하여 배열의 개체 그룹화
Python의 강력한 groupby 메서드를 사용하면 선택한 속성을 기반으로 개체를 효율적으로 그룹화할 수 있습니다. 이러한 그룹화 작업을 수행해야 하는 경우 groupby가 편리한 솔루션을 제공합니다.
예를 들어 다음 개체 배열을 고려하세요.
[ { 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" } ]
단계별로 개체를 그룹화하고 합계를 계산하려면 우리는 다음과 같은 가치를 사용합니다.
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)
이렇게 하면 원하는 결과를 얻을 수 있습니다. 출력:
[{"Phase": "Phase 1", "Value": 50}, {"Phase": "Phase 2", "Value": 130}]
또는 단계와 단계를 모두 기준으로 그룹화하려면 여러 수준의 그룹화를 사용할 수 있습니다.
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)
이 결과는 다음과 같습니다.
[{"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}]
Python의 다재다능한 그룹별 방법을 사용하면 객체 배열의 데이터를 쉽고 효율적으로 그룹화하고 집계하여 다양한 그룹화를 충족할 수 있습니다. 요구 사항.
위 내용은 Python의 'groupby' 메서드는 어떻게 객체 배열의 데이터를 효율적으로 그룹화하고 집계할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!