在 python 中的列表列表中获取唯一值

Get unique values in List of Lists in python

我想创建一个列表(或集合),其中包含出现在 python 列表列表中的所有唯一值。 我有这样的东西:

aList=[['a','b'], ['a', 'b','c'], ['a']]

我想要以下内容:

unique_values=['a','b','c']

我知道对于字符串列表你可以只使用 set(aList),但我不知道如何在列表列表中解决这个问题,因为 set(aList) 给我错误消息

unhashable type: 'list'

我该如何解决?

array = [['a','b'], ['a', 'b','c'], ['a']]
result = {x for l in array for x in l}
array = [['a','b'], ['a', 'b','c'], ['a']]
unique_values = list(reduce(lambda i, j: set(i) | set(j), array))

你可以在上面使用itertools's chain to flatten your array and then call set:

from itertools import chain

array = [['a','b'], ['a', 'b','c'], ['a']]
print set(chain(*array))

如果您期待 list 对象:

print list(set(chain(*array)))

您可以使用 numpy.unique:

import numpy
import operator
print numpy.unique(reduce(operator.add, [['a','b'], ['a', 'b','c'], ['a']]))
# ['a' 'b' 'c']

试试这个。

array = [['a','b'], ['a', 'b','c'], ['a']]
res=()
for item in array:
    res = list(set(res) | set(item))
print res

输出:

['a', 'c', 'b']

前 2 个投票答案对我不起作用,我不确定为什么(但我有整数列表)。最后我这样做了:

unique_values = [list(x) for x in set(tuple(x) for x in aList)]