Groups the elements of a list based on the given function.
- Use
collections.defaultdict
to initialize a dictionary. - Use
fn
in combination with afor
loop anddict.append()
to populate the dictionary. - Use
dict()
to convert it to a regular dictionary.
from collections import defaultdict def group_by(lst, fn): d = defaultdict(list) for el in lst: d[fn(el)].append(el) return dict(d)
Examples
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']}
Recommended snippets
Groups the elements of a list based on the given function and returns the count of elements in each group.
Splits values into two groups, based on the result of the given filtering function.
Finds the index of the first element in the given list that satisfies the provided testing function.