Ответ 1
Вы можете создать dict, чей ключ является объектом, а значения - самими объектами.
d = {}
for obj in object_list:
d[obj.thing] = obj
desired_list = d.values()
У меня есть список объектов, каждый из которых имеет определенный атрибут. Этот атрибут не уникален, и я хотел бы получить список объектов, который является подмножеством всего списка, так что все конкретные атрибуты являются уникальным набором.
Например, если у меня есть четыре объекта:
object1.thing = 1
object2.thing = 2
object3.thing = 3
object4.thing = 2
Я хотел бы получить либо
[object1, object2, object3]
или
[object1, object3, object4]
Точные объекты, которые заканчиваются в конечном списке, не важны, только уникальный список их уникальных атрибутов.
EDIT: Чтобы прояснить, по сути, я хочу, это набор, который привязан к этому конкретному атрибуту.
Вы можете создать dict, чей ключ является объектом, а значения - самими объектами.
d = {}
for obj in object_list:
d[obj.thing] = obj
desired_list = d.values()
Вы можете использовать list comprehension
и set
:
objects = (object1,object2,object3,object4)
seen = set()
unique = [obj for obj in objects if obj.thing not in seen and not seen.add(obj.thing)]
Вышеприведенный код эквивалентен:
seen = set()
unique = []
for obj in objects:
if obj.thing not in seen:
unique.append(obj)
seen.add(obj.thing)