Skip to content

Add collectby built-in #620

@evhub

Description

@evhub

Approximate implementation:

def collectby(key_func, iterable, value_func=None, reduce_func=None):
    collection = defaultdict(list) if reduce_func is None else {}
    for item in iterable:
        key = key_func(item)
        if value_func is not None:
            item = value_func(item)
        if reduce_func is None:
            collection[key].append(item)
        else:
            old_item = collection.get(key, sentinel)
            if old_item is not sentinel:
                item = reduce_func(old_item, item)
            collection[key] = item
    return collection

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions