classify

emlib.iterlib.classify(s, keyfunc)[source]

Split s according to keyfunc

Parameters:
  • s (Sequence[TypeVar(T)]) – the sequence to split

  • keyfunc (Callable[[TypeVar(T)], TypeVar(T2)]) – a function taking an item of s and returning the key under which all similar items will be grouped

Return type:

dict[TypeVar(T2), list[TypeVar(T)]]

Example

>>> s = [
...     {'name': 'John', 'city': 'New York'},
...     {'name': 'Otto', 'city': 'Berlin'},
...     {'name': 'Jakob', 'city': 'Berlin'},
...     {'name': 'Bob', 'city': 'New York'}
... ]
>>> groups = classify(s, lambda record: record['city'])
{'Berlin': [{'name': 'Otto', 'city': 'Berlin'},
            {'name': 'Jakob', 'city': 'Berlin'}],
 'New York': [{'name': 'John', 'city': 'New York'},
              {'name': 'Bob', 'city': 'New York'}]}