1.15 我们有如下一个字典或对象,想根据某个特定字段(如日期)来分组迭代数据
>>> rows = [
{"address": "beijing 5566","date": "2022/05/03"},
{"address": "qiqihaer","date": "2022/05/03"},
{"address": "chognqing","date": "2022/05/02"},
{"address": "shanghai","date": "2022/05/01"}
]
- 我们以日期分组的方式迭代数据,先对日期进行排序,再使用itertools.groupby()
>>> from operator import itemgetter
>>> from itertools import groupby
>>> rows.sort(key=itemgetter("date"))
>>> rows
[{'address': 'shanghai', 'date': '2022/05/01'}, {'address': 'chognqing', 'date': '2022/05/02'}, {'address': 'beijing 5566', 'date': '2022/05/03'}, {'address': 'qiqihaer', 'date': '2022/05/03'}]
>>> for date,items in groupby(rows,key=itemgetter("date")):
... print(date)
... for i in items:
... print(' ',i)
...
2022/05/01
{'address': 'shanghai', 'date': '2022/05/01'}
2022/05/02
{'address': 'chognqing', 'date': '2022/05/02'}
2022/05/03
{'address': 'beijing 5566', 'date': '2022/05/03'}
{'address': 'qiqihaer', 'date': '2022/05/03'}
-
groupby函数通过扫描序列,找出拥有相同值的序列项,并将他们分组
-
groupby创建一个迭代器,每次迭代都会返回一个value和一个子迭代器,这个子迭代器可以产生所有再该分组内具有该值的项
-
groupby只能检查连续的项,所以我们首先要将序列排序。