欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > >内容正文

python

python数组随机分组-凯发k8官方网

发布时间:2025/1/21 17 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 python数组随机分组_python实用黑科技——以某个字段进行分组 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

需求:

当前有个字典实例,你想以某个字段比如”日期”对整个字典里面的元素进行分组。

方法:

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()要快得多。

————————————————

总结

以上是凯发k8官方网为你收集整理的python数组随机分组_python实用黑科技——以某个字段进行分组的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图