# -*- coding: utf-8 -*- def group_by(value, group, default=None, display_check=None, print_value=None): groups = {} if value is None: return groups for elem in value: key = None if group in elem: key = elem[group] else: key = default if display_check is None or display_check(key): output = elem if print_value is not None: output = print_value(elem) groups.setdefault(key, []).append(output) return groups