仅将唯一对象插入列表

时间:2014-05-10 20:01:46

标签: python django

我有人的查询集:

people = Person.objects.all()

我有一个列表un_people = [] - 表示具有唯一名称的人员列表。

因此,可以有多个同名的人。我想过滤这个,然后插入列表,以便列表只包含具有唯一名称的人物对象。

我试过了:

for person in people: 
   if person.name in un_people:
      #... ? 

但在列表中,有对象,而不是名称。如何检查具有相同名称的对象然后插入列表?

2 个答案:

答案 0 :(得分:3)

您可以使用set数据结构:

un_people = set(people)

如果你的元素不可用,JonClemens建议你可以先建立一个名单列表:

un_people = set([p.name for p in people])

答案 1 :(得分:3)

使用dict执行唯一性,然后取值,例如:

uniq_names = {person.name:person for person in people}
uniq_people = uniq_names.values() # use list(unique_names.values()) for Py 3.x