Python-列表-分组

1 前言

最近在整python多线程,需要对文件列表进行分组,下面整理下有关list分组的内容。

2 分块

1
2
3
4
num = 3
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
group_data = [data[i:i + num] for i in range(0, len(data), num)]
print(group_data) # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

3 groupby分组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from itertools import groupby

user_list = [
{"uid": 1, "sex": "男", "age": 10},
{"uid": 3, "sex": "男", "age": 20},
{"uid": 4, "sex": "女", "age": 20},
{"uid": 4, "sex": "女", "age": 31},
{"uid": 2, "sex": "男", "age": 10}
]
# 多字段排序
user_sort = sorted(user_list, key=lambda x: (x["sex"], x["age"]))
# 多字段分组
user_group = groupby(user_sort, key=lambda x: (x["sex"], x["age"]))
for key, group in user_group:
print(key, list(group))
"""
('女', 20) [{'uid': 4, 'sex': '女', 'age': 20}]
('女', 31) [{'uid': 4, 'sex': '女', 'age': 31}]
('男', 10) [{'uid': 1, 'sex': '男', 'age': 10}, {'uid': 2, 'sex': '男', 'age': 10}]
('男', 20) [{'uid': 3, 'sex': '男', 'age': 20}]
"""

注意分组之前应先使用分组字段排好序。

X 参考