从对象列表中获取唯一的ID列表

时间:2013-09-10 00:44:12

标签: python list unique

我有一个对象列表,每个对象都有一个id。此列表可以包含重复项。如何获得唯一的ID列表?

4 个答案:

答案 0 :(得分:4)

您可以将id作为键添加到词典中并获取它的键:

d = {}
for item in items:
    d[item.id] = item
print d.keys()

现在,d.values()包含具有统一ID的项目。只要没有两个不同的项具有相同的id,上面就是无损的。

与其他解决方案(在撰写本文时)形成对比,这也提供了id与具有指定id的项目之间的良好映射。

答案 1 :(得分:2)

假设你想要一个包含所有身份但没有双打的列表

all_ids = [x.getId() for x in items]
no_double_ids = list(set(all_ids))

答案 2 :(得分:0)

我认为规范的方法如下:

org_list = [1,2,2,4,1,5,3]
list(set(org_list))

它会对列表进行重新排序,因此如果这是一个问题,则需要另一种方法。另见:

How do you remove duplicates from a list in whilst preserving order? http://www.peterbe.com/plog/uniqifiers-benchmark

答案 3 :(得分:0)

>>> class ObjectIdHolder(object):
...     def __init__(self, object_id):
...         self.object_id = object_id
... 
>>> ids = list(range(10)) * 2
>>> a = [ObjectIdHolder(x) for x in ids]
>>> unique_ids = {obj.object_id for obj in a}
>>> print unique_ids
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])