Files
Python_CookBook_repo/1.数据结构与算法/15.根据字段分组.py

40 lines
1.3 KiB
Python
Raw Permalink Normal View History

2025-09-10 16:12:45 +08:00
# 假如我们有一个记录需要进行分组
rows = [
{"address": "5412 N CLARK", "date": "07/01/2012"},
{"address": "5148 N CLARK", "date": "07/04/2012"},
{"address": "5800 E 58TH", "date": "07/02/2012"},
{"address": "2122 N CLARK", "date": "07/03/2012"},
{"address": "5645 N RAVENSWOOD", "date": "07/02/2012"},
{"address": "1060 W ADDISON", "date": "07/02/2012"},
{"address": "4801 N BROADWAY", "date": "07/01/2012"},
{"address": "1039 W GRANVILLE", "date": "07/04/2012"},
]
# 如果我们想按日期进行分组那itertools里的groupby会很好用
from operator import itemgetter
from itertools import groupby
# 因为groupby只能检查连续的项所以我们先对列表进行排序
rows.sort(key=itemgetter("date"))
print(rows)
# 然后我们进行分组操作:
for date, items in groupby(rows, itemgetter("date")):
print(date)
for i in items:
print(' ', i)
# groupby每次返回的是一个值分组名称和一个子迭代器组内数据
# 当然如果是单纯的分组,一键多值字典是个好东西
from collections import defaultdict
data = defaultdict(list)
for item in rows:
data[item["date"]].append(item)
print(data)
# 在不考虑内存开销的情况下这东西比先排序再groupby快