web-dev-qa-db-ja.com

pythonのリストのリストで一意の値を取得する

Pythonのリストのリストに表示されるすべての一意の値のリスト(またはセット)を作成します。私はこのようなものを持っています:

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

そして、私は次のものが欲しいです:

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

文字列のリストにはset(aList)だけを使用できることを知っていますが、set(aList)がエラーメッセージを取得するため、リストのリストでこれを解決する方法がわかりません

unhashable type: 'list'

どうすれば解決できますか?

19
mihasa
array = [['a','b'], ['a', 'b','c'], ['a']]
result = set(x for l in array for x in l)
27
dlask

itertoolschain を使用して配列をフラットにしてから set を呼び出すことができます。 =その上:

from itertools import chain

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

list オブジェクトを期待している場合:

print list(set(chain(*array)))
13
Tanveer Alam
array = [['a','b'], ['a', 'b','c'], ['a']]
unique_values = list(reduce(lambda i, j: set(i) | set(j), array))
3
no coder

numpy.unique を使用できます。

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

これを試してください。

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

出力:

['a', 'c', 'b']
1
Haresh Shyara

上位2つの回答が私にはうまくいきませんでした。なぜかわかりません(しかし、整数のリストがあります)。最後に私はこれをやっています:

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