# 假如我们有一个记录需要进行分组 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快