简介
在 Python 中,我们可以根据给定的函数对列表中的元素进行分组。这在许多情况下都很有用,例如当我们想按单词长度对单词列表进行分组,或者按奇偶性对数字列表进行分组时。在这个挑战中,你将被要求编写一个函数,根据给定的函数对列表中的元素进行分组。
在 Python 中,我们可以根据给定的函数对列表中的元素进行分组。这在许多情况下都很有用,例如当我们想按单词长度对单词列表进行分组,或者按奇偶性对数字列表进行分组时。在这个挑战中,你将被要求编写一个函数,根据给定的函数对列表中的元素进行分组。
编写一个函数 group_by(lst, fn),它接受一个列表 lst 和一个函数 fn 作为参数,并返回一个字典,其中键是将 fn 应用于 lst 元素的结果,值是 lst 中那些在应用 fn 时产生相应键的元素列表。
例如,如果我们有一个数字列表 [6.1, 4.2, 6.3],并且我们想按它们的整数部分进行分组,我们可以使用 math 模块中的 floor 函数作为分组函数。预期输出将是 {4: [4.2], 6: [6.1, 6.3]}。
from collections import defaultdict
def group_by(lst, fn):
d = defaultdict(list)
for el in lst:
d[fn(el)].append(el)
return dict(d)
from math import floor
group_by([6.1, 4.2, 6.3], floor) ## {4: [4.2], 6: [6.1, 6.3]}
group_by(['one', 'two', 'three'], len) ## {3: ['one', 'two'], 5: ['three']}
在这个挑战中,你已经学会了如何根据给定的函数对列表中的元素进行分组。你还编写了一个函数,通过使用字典来存储分组,并使用循环来填充它们。这是一项有用的技术,可以应用于许多不同的场景。