【发布时间】:2018-03-29 23:06:33
【问题描述】:
我有一个列表列表,我想删除重复项。列表是无序的对象,系统认为它们是不同的。 例如
a = [[1,2], [1,3], [3,4], [2,1] ,[4,3]]
我希望最终结果是
b = [[1,2], [1,3], [3,4]]
其中第一个匹配项被保留。
【问题讨论】:
-
什么语言?到目前为止,您尝试过什么?
我有一个列表列表,我想删除重复项。列表是无序的对象,系统认为它们是不同的。 例如
a = [[1,2], [1,3], [3,4], [2,1] ,[4,3]]
我希望最终结果是
b = [[1,2], [1,3], [3,4]]
其中第一个匹配项被保留。
【问题讨论】:
我使用 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]] 的最终结果,但它不会是输入列表中实际存在的任何东西。 .
set(map(set, a))(毕竟它们是无序的)。