python
python数组随机分组-凯发ag旗舰厅登录网址下载
需求:
当前有个字典实例,你想以某个字段比如”日期”对整个字典里面的元素进行分组。
方法:
itertools.groupby()函数是专门用来干这个活的。请看下面这个例子,这里有一个列表构成的字典,你想按照日期来对列表进行分组,可以这么做:
in [42]: from operator import itemgetter
in [43]: from itertools import groupby
in [44]: 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 addision', 'date' : '07/02/2012'},
...: {'address' : '4801 n broadway', 'date' : '07/01/2012'},
...: {'address' : '1039 w granville', 'date' : '07/04/2012'}
...: ]
in [45]: rows.sort(key=itemgetter('date'))
in [46]: for date, items in groupby(rows, key=itemgetter('date')):
...: print(date)
...: for i in items:
...: print(' ', i)
...:
07/01/2012
{'address': '5412 n clark', 'date': '07/01/2012'}
{'address': '4801 n broadway', 'date': '07/01/2012'}
07/02/2012
{'address': '5800 e 58th', 'date': '07/02/2012'}
{'address': '5645 n ravenswood', 'date': '07/02/2012'}
{'address': '1060 w addision', 'date': '07/02/2012'}
07/03/2012
{'address': '2122 n clark', 'date': '07/03/2012'}
07/04/2012
{'address': '5148 n clark', 'date': '07/04/2012'}
{'address': '1039 w granville', 'date': '07/04/2012'}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
扩展:
实用groupby()函数前,必须对相应的要分组的字段进行排序,因为他只能对有序数据进行分组。如果你仅仅只是想针对日期进行分组并且允许随机获取,那可能更好的方法是实用defaultdict()先产生一个多维字典,例如:
in [48]: from collections import defaultdict
in [49]: rows_by_date = defaultdict(list)
in [50]: for row in rows:
...: rows_by_date[row['date']].append(row)
...:
in [51]: for r in rows_by_date['07/01/2012']:
...: print(r)
...:
{'address': '5412 n clark', 'date': '07/01/2012'}
{'address': '4801 n broadway', 'date': '07/01/2012'}
对于这个例子,并不需要先对记录进行排序。因此如果不需要考虑内存,用这个方法比用groupby()要快得多。
————————————————
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的python数组随机分组_python实用黑科技——以某个字段进行分组的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇:
- 下一篇: