在 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)]
我想创建一个列表(或集合),其中包含出现在 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)]