Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 20, 2017 19:59:51

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

сортировка

Всем доброго времени суток!
Задачка:
отсортировать “a”, вернуть пересечение двух массивов если при сравнении двух объектов они одинаковы по одному ключу.
Вопрос:
Подскажите есть ли возможность не крутить 2 раза for и возможно ли сократить мой гкод ?

 a = [{'say':'bla-bla', 'disk':'C', 'pl':'sh'}, {'say':'bla', 's': 'cr', 'something':'qwerty'}, {'say':'azsxd', 's': 'black'}, {'say':'rere', 'cast':'aaa', 'ss':'123'}, {'say':'44', '1':'1'}]
b = [{'say':'bla-bla', 'disk':'D'}, {'say':'bla', 's':'cr'}]

 class DiffObj(object):
    def __init__(self, list_one, list_two):
        self.list_one, self.list_two = list_one, list_two
    @property
    def sort_list_one(self):
        return [self.one for self.one in self.list_one if any(self.two.get('say') == self.one.get('say') for self.two in self.list_two)]

 result = DiffObj(a, b)
print(result.sort_list_one)

Отредактировано papuas (Ноя. 20, 2017 20:06:12)

Офлайн

#2 Ноя. 20, 2017 20:35:20

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2833
Репутация: +  186  -
Профиль   Отправить e-mail  

сортировка

И зачем ты класс сделал?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Ноя. 20, 2017 21:23:36

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

сортировка

Rodegast
И зачем ты класс сделал?
Действительно а зачем?
Наверное чтобы все спрашивали…
Ну представьте ,что это функция, делов то.
Или просто генератор списка.

 a = [one for one in a if any(two.get('say') == one.get('say') for two in b)]
Вопрос все еще актуален.
Буду рад предложенным алгоритмам.

Отредактировано papuas (Ноя. 20, 2017 23:54:06)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version