【问题标题】:Get unique list of ids from object list从对象列表中获取唯一的 id 列表
【发布时间】:2013-09-10 00:44:12
【问题描述】:

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

【问题讨论】:

    标签: python list unique


    【解决方案1】:

    您可以将 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))
      

      【讨论】:

        【解决方案3】:

        我认为规范的方式如下:

        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

        【讨论】:

        • 这只是给了我一个重复的对象列表,而不是 ID。
        • 对不起,我看错了。基本上我会做windwarrior在他的回答中所做的事情......
        【解决方案4】:
        >>> 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])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-27
          • 2022-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-20
          • 2015-02-11
          相关资源
          最近更新 更多