У меня есть список "list_all_items" [0,1,2,3, ... n] и список "ящиков" объектов "ящик", атрибут которых "элементы" может содержать один или несколько элементов, например, поле. items = [1,3,5] и атрибут "main_item", который соответствует отдельному элементу из "list_all_items": например, box.main_item = 1
Я хотел бы сгруппировать ящики в виде списка списков, гдеВторой слой списков соответствует объектам Box с теми же элементами.
Я реализовал это и работает довольно хорошо, однако для больших списков он становится довольно медленным:
for item_id in list_all_items:
same_mainitem_boxes = []
for x in [t for t in boxes if t.main_item == item_id]:
#simply used to create an hashable set for the dataframe
hashable_set = self.convert_list_into_hashable(x.items)
same_mainitem_boxes.append(
{'id': x.id, 'items': x.items, 'hashable_set': hashable_set})
if len(same_mainitem_boxes) > 0:
if len(pd.DataFrame(same_mainitem_boxes)) > 1:
df_by_nodes_set = pd.DataFrame(same_mainitem_boxes).groupby('hashable_set')
Интересно,есть более эффективный способ реализовать это.