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 © 2025
京ICP备05028076号