Форум сайта python.su
Всем доброго времени суток!
Задачка:
отсортировать “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)
Офлайн
И зачем ты класс сделал?
Офлайн
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)
Офлайн