Группировка элементов по функции

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В Python вы можете группировать элементы списка на основе заданной функции. Это может быть полезно, когда вы хотите подсчитать количество вхождений каждой группы. В этом испытании вам будет поручено создать функцию, которая группирует элементы списка на основе заданной функции и возвращает количество элементов в каждой группе.

Подсчет сгруппированных элементов

Напишите функцию count_by(lst, fn = lambda x: x), которая принимает список lst и функцию fn в качестве аргументов. Функция должна группировать элементы списка на основе заданной функции и возвращать словарь с количеством элементов в каждой группе.

Для решения этой проблемы вы можете следовать следующим шагам:

  1. Инициализировать словарь с использованием collections.defaultdict.
  2. Использовать map(), чтобы применить заданную функцию к каждому элементу списка.
  3. Перебирать сопоставленные значения и увеличивать счетчик каждого элемента в словаре.

Функция должна возвращать полученный словарь.

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() для решения этой проблемы.