2014年03月19日 星期三 09:30
如果我们希望对一组数据进行分组合并(类似于数据库SQL group by(column))的操作,可以使用Python itertools中的groupby模块。
需要注意的是:groupby模块只能接受事先排序的数据,否则无法正常工作。这一点非常类似Unix下的命令行工具uniq。
示例代码如下:
rows = [ {'name':'zhangxiaofang', 'father':'laozhang'}, {'name':'liufang', 'father':'laoliu'}, {'name':'zhangxiaoli', 'father':'laozhang'}, {'name':'zhangxiaolan', 'father':'laozhang'}, {'name':'liuhong', 'father':'laoliu'} ] from operator import itemgetter from itertools import groupby rows.sort(key=itemgetter('father')) for father,items in groupby(rows,key=itemgetter('father')): print(father) for item in items: print('\t',item) from collections import defaultdict rows_by_father=defaultdict(list) for row in rows: rows_by_father[row['father']].append(row) for f in rows_by_father.keys(): print(f) for item in rows_by_father.get(f): print('\t',item)
参考资料:
http://docs.python.org/3/library/itertools.html#itertools.groupby
Zeuux © 2024
京ICP备05028076号