我有一个列表列表,其中一些列表中有一个列表:
x = [[[1,2],3],[[3,4],5], [[1,2],3]]
我尝试获得唯一性:
x = [[[1,2],3],[[3,4],5]]
但没有运气 - 任何想法?
我到目前为止使用过:
unique_data = [list(el) for el in set(tuple(el) for el in x)]
在列表列表中有效,但在列表中添加列表元素时失败
答案 0 :(得分:7)
x = [[[1,2],3],[[3,4],5], [[1,2],3]]
print [item for idx, item in enumerate(x) if x.index(item) == idx]
# [[[1, 2], 3], [[3, 4], 5]]
我们可以像这样在O(N)中做到这一点
x = [[[1,2],3],[[3,4],5], [[1,2],3]]
x = tuple(tuple(tuple(j) if isinstance(j, list) else j for j in i) for i in x)
from collections import OrderedDict
print [[list(j) if isinstance(j, tuple) else j for j in i] for i in OrderedDict.fromkeys(x).keys()]
# [[[1, 2], 3], [[3, 4], 5]]
答案 1 :(得分:3)
这将做你想要的。
x = [[[1,2],3],[[3,4],5], [[1,2],3]]
p = {hash(str(item)): item for item in x}
uniques = [ val for val in p.values()]
答案 2 :(得分:0)
x = [[[1,2],3],[[3,4],5], [[1,2],3]]
z = []
for i in x:
if i not in z:
z.append(i)
print z
[[[1, 2], 3], [[3, 4], 5]]
这是你要找的吗?