Найти - Пользователи
Полная версия: сортировка
Начало » Python для новичков » сортировка
1
papuas
Всем доброго времени суток!
Задачка:
отсортировать “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)

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

 a = [one for one in a if any(two.get('say') == one.get('say') for two in b)]
Вопрос все еще актуален.
Буду рад предложенным алгоритмам.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB