улучшить скорость функции, которая группирует объекты с одинаковым атрибутом - PullRequest
0 голосов
/ 18 октября 2019

У меня есть список "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')

Интересно,есть более эффективный способ реализовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...