Algumas vezes, você deseja dividir uma lista de objetos (ou dicionários) em sublistas de objetos que compartilham uma propriedade comum. Nesses casos, você pode usar este recorte simples:
def slice(objects, prop):
"""
slice objects in sub-lists sharing a common property
"""
if not objects:
return []
def get_prop(obj, prop):
if not isinstance(objects[0], dict):
return obj.__dict__[prop]
return obj[prop]
objects_set = set([get_prop(o, prop) for o in objects])
return [[o for o in objects if get_prop(o, prop) == obj] for obj in objects_set]