《笔记》python itertools的groupby分组数据处理,itertoolsgroupby,今天遇到这么一个需求
《笔记》python itertools的groupby分组数据处理,itertoolsgroupby,今天遇到这么一个需求
今天遇到这么一个需求,需要将这样的数据进行分组处理:
[(1, 2), (2, 3), (1, 4), (5, 5), (3, 4), (2, 6)]
处理之后我可能需要得到这样的结果:
[(1, (2, 4)), (2, (3, 6)), (3, (4, )), (5, (5, ))]
找了一些办法,最后想到了以前用过的在itertools里面的包groupby方法,因为比较少使用所以总是忘。它可以轻松的实现分组功能,由于是itertools包里面的,所以它的返回是一个迭代器。这一点要注意下面我们写代码来跑一下。
from itertools import groupbyfrom operator import itemgetterx = [(1, 2), (2, 3), (1, 4), (5, 5), (3, 4), (2, 6)]soooo = sorted(x, key=itemgetter(0))p = groupby(soooo, key=itemgetter(0))for i in p: print i[0], [_[1] for _ in i[1]]output:1 [2, 4]2 [3, 6]3 [4]5 [5]
你可以使用itemgetter也可以直接顺手使用lamda表达式看你自己。
其实笨点的方法,用default dict似乎也可以实现。还是先然后把没组tuple的 第一个元素做key 往后追加,得到一个字典。
之后再用字典.keys()方法获得去重的键,用values的方法获得数组。这种方法似乎还不需要排序,美滋滋。groupby使用之前要排序,否则无法达到效果。
Reference:
https://stackoverflow.com/questions/3749512/python-group-by Python group by
《笔记》python itertools的groupby分组数据处理
相关内容
- Python网络爬虫(四),python网络爬虫,关于Robots协议
- 【python的基本数据类型及进制扫盲】,python扫盲,一、进
- python-飞机大战,,效果图main.py
- python使用xlrd读取excel数据时,整数变小数的解决办法,
- 【Python】Django2.0集成Celery4.1详解,django2.0celery4.1,环境准
- 字典中键重复时——pycharm和python IDLE打印的一个差别,
- python 输出所有大小写字母, range()以及列表切片,,所以
- caffe添加自己编写的Python层,caffepython层,由于Python的灵
- Python3之urllib模块,python3urllib,简介 urllib
- Python——决策树实战:california房价预测,pythoncaliforn
评论关闭