Rumah >hujung hadapan web >tutorial js >Bagaimanakah kaedah `groupby` Python boleh mengumpulkan dan mengagregat data dengan cekap daripada tatasusunan objek?
Mengumpulkan Objek dalam Tatasusunan Menggunakan Kaedah GroupBy
Kaedah kumpulan mengikut Python yang berkuasa membolehkan pengumpulan objek yang cekap berdasarkan atribut terpilih. Jika anda perlu melakukan operasi pengumpulan sedemikian, groupby menawarkan penyelesaian yang mudah.
Sebagai contoh, pertimbangkan tatasusunan objek berikut:
[ { 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" } ]
Untuk mengumpulkan objek mengikut Fasa dan mengira jumlah daripada Nilai, kami menggunakan:
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)
Ini menghasilkan yang diingini output:
[{"Phase": "Phase 1", "Value": 50}, {"Phase": "Phase 2", "Value": 130}]
Sebagai alternatif, untuk mengumpulkan mengikut Fasa dan Langkah, kita boleh menggunakan berbilang peringkat kumpulan mengikut:
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)
Ini mengembalikan:
[{"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}]
Dengan kaedah kumpulan mengikut kaedah Python yang serba boleh, anda boleh mengumpulkan dan mengagregat data dengan mudah dan cekap daripada tatasusunan objek, memenuhi pelbagai kumpulan anda keperluan.
Atas ialah kandungan terperinci Bagaimanakah kaedah `groupby` Python boleh mengumpulkan dan mengagregat data dengan cekap daripada tatasusunan objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!