【问题标题】:Remove duplicate lists from a list of lists, lists are unordered hashable objects从列表列表中删除重复列表,列表是无序的可散列对象
【发布时间】:2018-03-29 23:06:33
【问题描述】:

我有一个列表列表,我想删除重复项。列表是无序的对象,系统认为它们是不同的。 例如

a = [[1,2], [1,3], [3,4], [2,1] ,[4,3]]

我希望最终结果是

b =  [[1,2], [1,3], [3,4]]

其中第一个匹配项被保留。

【问题讨论】:

  • 什么语言?到目前为止,您尝试过什么?

标签: python list unordered


【解决方案1】:

我使用 python 来解决这个问题。

a = [[1,2], [1,3], [3,4], [2,1] ,[4,3]]

for i in a:
    i.sort() # sort the inner list for [2,1] to [1,2]

b = set(map(tuple,a)) # convert the list to tuple for hashable
b = map(list,b) # covert again back to list

print b

【讨论】:

  • 如果你有一个[[2, 1], [2,1]] 的列表,你最终会得到[[1, 2]] 的最终结果,但它不会是输入列表中实际存在的任何东西。 .
  • 是的,然后必须像 if len(a) > 1 then b 执行和打印一样在逻辑上处理它。谢谢
  • 而不是对内部列表进行排序,为什么不只是set(map(set, a))(毕竟它们是无序的)。
  • 你运行 set(map(set, a)) 吗? set 在这里是不可散列的类型。
猜你喜欢
  • 1970-01-01
  • 2011-01-13
  • 2012-07-11
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
相关资源
最近更新 更多