【问题标题】:Remove duplicates and finding unique sublists [duplicate]删除重复项并找到唯一的子列表 [重复]
【发布时间】:2013-05-09 03:52:55
【问题描述】:

我有一个如下所示的嵌套列表:

lst = [[1,2,3],[1,2],[1,2,3],[2,3],[4,5],[2,3],[2,4],[4,2]]

我想在lst 中找到唯一的子列表。使用上面的例子,我想找到:

lst_set = [1,2,3],[1,2],[2,3],[4,5],[2,4]]

顺序无关紧要。也就是说[2,4][4,2]是一样的。

【问题讨论】:

    标签: python


    【解决方案1】:
    set(tuple(sorted(i)) for i in lst)
    

    【讨论】:

      【解决方案2】:
      In [22]: lst = [[1,2,3],[1,2],[1,2,3],[2,3],[4,5],[2,3],[2,4],[4,2]]
      
      In [23]: set(frozenset(item) for item in lst)
      Out[23]: 
      set([frozenset([2, 4]),
           frozenset([1, 2]),
           frozenset([2, 3]),
           frozenset([1, 2, 3]),
           frozenset([4, 5])])
      

      【讨论】:

      • 不错,不知道frozenset
      • 哇,谢谢。我也不知道frozenset。
      • 子列表有重复元素时出现问题,例如[1,2,3, 3], [1,1,2,3]
      【解决方案3】:

      看看内置的set()函数。由于列表不可散列,您可能需要在使用 set() 之前将列表转换为元组。

      意思是:

      set([tuple(sorted(x)) for x in lst])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-17
        • 1970-01-01
        • 2017-12-15
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多