问题
你有一个字典或者实例的序列,然后你想根据某个特定的字段来分组迭代访问。
解决方案:
使用itertools.groupby()函数实现 https://www.cnblogs.com/dreamer-fish/p/5522687.html
from itertools import groupby
from operator import itemgetter
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'}]
rows.sort(key = itemgetter('date')) # 先对date排序才能使用groupby
for key ,group in groupby (rows,key = itemgetter('date')):
print(key)
for item in group :
print(4*' ',item)
总结:
itertools.groupby
迭代器和一个可选的 key
参数,按 key
来分组的,如果 key
是None的话,则按元素分组
itertools.groupby
返回每个不同的 key
和一个迭代器对象,这个迭代器对象就是 key
对应的一组元素
并且 itertools.groupby
要求分组之前,迭代器的所有元素必须是有序的,原因跟 itertools.groupby
的实现有关。