Python的groupby()方法可以将一个可迭代对象按照指定条件进行分组,它能够接收一个关键字参数,用于指定分组的的key,返回一个元组(key, group)组成的迭代器,其中key是组别,group是包含相同key的元素的迭代器。
函数原型如下:
groupby(iterable[, key])
其中,iterable
是需要分组的可迭代对象,而key
则是指定分组的关键字参数,这个参数可以是一个函数或者一个lambda表达式,用于指定分组操作的规则。
下面来介绍一下groupby()的使用方法:
1. 通过对象属性分组
我们可以通过对象属性对一个列表进行分组,如下所示:
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
persons = [
Person('张三', 21, '男'),
Person('李四', 22, '女'),
Person('王五', 23, '男'),
Person('赵六', 24, '女'),
Person('孙七', 25, '男'),
Person('刘八', 26, '女')
]
from itertools import groupby
# 按照性别进行分组
persons_grouped_by_gender = groupby(persons, lambda x: x.gender)
for gender, group in persons_grouped_by_gender:
print(gender)
for person in group:
print(person.name, person.age)
输出结果为:
男
张三 21
王五 23
孙七 25
女
李四 22
赵六 24
刘八 26
这里的group是包含相同key的元素的迭代器。
2. 通过字符串长度分组
在一个字符串列表中,我们可以按照字符串的长度进行分组:
str_list = ['a', 'bc', 'def', 'g', 'hij', 'klmno']
from itertools import groupby
# 按照字符串长度进行分组
str_grouped_by_len = groupby(str_list, lambda x: len(x))
for length, group in str_grouped_by_len:
print(length)
for string in group:
print(string)
输出结果为:
1
a
1
g
2
bc
3
def
3
hij
5
klmno
这里的group是包含相同key的元素的迭代器。
以上就是groupby()的详细讲解及两个示例的介绍。