web-dev-qa-db-fra.com

Obtenir des valeurs uniques dans la liste des listes en python

Je souhaite créer une liste (ou un ensemble) de toutes les valeurs uniques figurant dans une liste de listes en python .J'ai quelque chose comme ceci:

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

et je voudrais ce qui suit:

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

Je sais que pour une liste de chaînes, vous pouvez simplement utiliser set (aList), mais je ne peux pas comprendre comment résoudre ce problème dans une liste de listes, car set (aList) me renvoie le message d'erreur 

unhashable type: 'list'

Comment puis-je le résoudre?

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

Vous pouvez utiliser itertools / s chain pour aplatir votre tableau, puis appelez set :

from itertools import chain

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

Si vous attendez un list object:

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

Vous pouvez utiliser numpy.unique :

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

Essayez ceci.

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

Sortie:

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