Files
30-seconds-of-code/snippets/count_by.md
Angelos Chalaris efeabbc40e Resolvs #99
2019-09-22 15:41:44 +03:00

586 B

title, tags
title tags
count_by list,intermediate

Groups the elements of a list based on the given function and returns the count of elements in each group.

Use map() to map the values of the given list using the given function. Iterate over the map and increase the element count each time it occurs.

def count_by(arr, fn=lambda x: x):
  key = {}
  for el in map(fn, arr):
    key[el] = 1 if el not in key else key[el] + 1
  return key
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}