Python论坛  - 讨论区

标题:Python Cookbook 之 自定义数据列分组合并(groupby)

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哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号