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

3
我有一个对象列表,每个对象都有一个id。该列表可能会包含重复的id。如何获取唯一的id列表?
4个回答

4
你可以将id作为字典的键,并获取它的键:
d = {}
for item in items:
    d[item.id] = item
print d.keys()

现在,d.values() 包含具有统一id的项目。只要没有两个不同的项目具有相同的id,上述过程就是无损的。
与其他解决方案(写作时)相比,这还提供了一个良好的映射,将id和具有指定id的项目进行匹配。

2
假设您想要一个所有ID的列表,但不重复的列表。
all_ids = [x.getId() for x in items]
no_double_ids = list(set(all_ids))

0

那只是给我一个去重后的对象列表,而不是它们的ID。 - Mark Richman
啊,抱歉,我看错了。基本上我会像WindWarrior在他的回答中所做的那样... - Carst

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])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接