Как получить уникальные значения из массива объектов класса?
Есть массив объектов Card. В c# я могу сделать так
var lst = new List<Card>();
var rez = lst.DistinctBy(x=>x.suit).ToList();
То есть брать уникальные значения. Как сделать тоже самое в питон?
class Card(object):
def __init__(self, rank, suit, dop):
self.rank = rank
self.suit = suit
self.dop = dop
def __eq__(self, other):
return self.rank == other.rank and self.suit == other.suit
def __lt__(self, other):
return self.rank < other.rank
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Действия:
- Есть список из
Card:lst = [<Card>, <Card>, ...] - Создание словаря, где ключом будет значение поля
suit, а значениемCard - Получение значений словаря
Пример:
rez = {x.suit: x for x in lst}.values()
Метод .values() вернет не список (list), а объект dict_values (его можно итерировать), а чтобы получить список:
rez = list({x.suit: x for x in lst}.values())