【问题标题】:Deleting duplicates in list of lists in Python 2.7在 Python 2.7 中删除列表列表中的重复项
【发布时间】:2014-06-01 17:21:55
【问题描述】:
  • Trenutno_stanje是列表
  • povijest 是列表列表
  • epsilon_okolina 是提供字符串列表的函数 (pocetno):

    trenutno_stanje.append(pocetno)
    trenutno_stanje.extend(epsilon_okolina[pocetno])
    povijest.append(trenutno_stanje)
    

povijest 应该是列表的本质列表,但它在代码中以某种方式重复实体 在某种程度上是可以避免的。

我想知道的是如何删除列表列表中的重复字符串? 我试过了:

for p in povijest:
    p=list(set(p))

但它什么也没改变

【问题讨论】:

    标签: python list python-2.7 duplicates


    【解决方案1】:

    在您的for 循环中,您只是重新分配p 而实际上并未更改povijest 列表。此外,set 仅适用于可散列类型,list 肯定不是其中之一。在将主列表中的列表转换为可以散列的内容(例如 tuple,这是一个不可变列表)然后将其转换为集合之后,您想使用列表推导。

    >>> a = [1, 2, 3, 4]
    >>> b = [1, 2, 3, 4]
    >>> c = [1, 3, 4]
    >>> i1 = [a, b, c]
    >>> set([tuple(x) for x in i1])
    set([(1, 2, 3, 4), (1, 3, 4)])
    

    【讨论】:

      【解决方案2】:
      >>> b = [[1,2,3, 3], [3, 2, 4,4]]
      >>> b = [ list(set(x)) for x in b ] 
      >>> b
      [[1, 2, 3], [2, 3, 4]]
      

      【讨论】:

      • 这不能回答 OP 的问题。他原来的列表更像是`b = [['one', 'two'], ['two']]`
      • 我在说 >>>b=[['one'],['one'],['two','three']] >>>... >>b [[ '一'],['二','三'],
      • @Larcend 不,你没有。考虑二维列表b = [[1,2,3,3],[3,2,4,4],[1,2,3,3]] 注意第一个和第三个列表是相同的。他希望只保留一个列表,而不是在特定列表中重复。
      • 好的,它现在没有重复,谢谢,但现在它不想被排序,lol
      【解决方案3】:

      如果你对订单感兴趣,试试这个,

      >>> a=[1,2,3,4,5]
      >>> b=[2,3,1,2]
      >>> c=[1,2,3,4,5]
      >>> z=[a,b,c]
      >>> dict((x[0], x) for x in z).values()
      [[1, 2, 3, 4, 5], [2, 3, 1, 2]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 2020-08-04
        • 2014-07-14
        • 1970-01-01
        • 2011-01-13
        相关资源
        最近更新 更多