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

mih*_*asa 20 python list unique set

我想创建一个列表(或集)中出现在python列表中的所有唯一值.我有这样的事情:

aList=[['a','b'], ['a', 'b','c'], ['a']]
Run Code Online (Sandbox Code Playgroud)

我想要以下内容:

unique_values=['a','b','c']
Run Code Online (Sandbox Code Playgroud)

我知道对于一个字符串列表你可以使用set(aList),但我无法想象如何在列表列表中解决这个问题,因为set(aList)会得到错误信息

unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)

我怎么解决呢?

dla*_*ask 30

array = [['a','b'], ['a', 'b','c'], ['a']]
result = set(x for l in array for x in l)
Run Code Online (Sandbox Code Playgroud)


Tan*_*lam 14

您可以使用itertools's chain来展平您的阵列然后调用set它:

from itertools import chain

array = [['a','b'], ['a', 'b','c'], ['a']]
print set(chain(*array))
Run Code Online (Sandbox Code Playgroud)

如果您期待一个list对象:

print list(set(chain(*array)))
Run Code Online (Sandbox Code Playgroud)

  • 还有`set(chain.from_iterable(array))`. (3认同)