简介
在 Python 中,你可以根据给定的函数对列表中的元素进行分组。当你想要统计每个组中元素的出现次数时,这会很有用。在这个挑战中,你将负责创建一个函数,该函数根据给定的函数对列表中的元素进行分组,并返回每个组中元素的计数。
在 Python 中,你可以根据给定的函数对列表中的元素进行分组。当你想要统计每个组中元素的出现次数时,这会很有用。在这个挑战中,你将负责创建一个函数,该函数根据给定的函数对列表中的元素进行分组,并返回每个组中元素的计数。
编写一个函数 count_by(lst, fn = lambda x: x),它接受一个列表 lst 和一个函数 fn 作为参数。该函数应根据给定的函数对列表中的元素进行分组,并返回一个字典,其中包含每个组中元素的计数。
要解决这个问题,你可以按照以下步骤进行:
collections.defaultdict 初始化一个字典。map() 将给定的函数应用于列表中的每个元素。该函数应返回结果字典。
from collections import defaultdict
def count_by(lst, fn = lambda x: x):
count = defaultdict(int)
for val in map(fn, lst):
count[val] += 1
return dict(count)
from math import floor
count_by([6.1, 4.2, 6.3], floor) ## {6: 2, 4: 1}
count_by(['one', 'two', 'three'], len) ## {3: 2, 5: 1}
在这个挑战中,你学习了如何根据给定的函数对列表中的元素进行分组,并返回每个组中元素的计数。你还学习了如何使用 collections.defaultdict 和 map() 来解决这个问题。