Get unique values in List of Lists
Question:
I want to create a list (or set) of all unique values appearing in a list of lists in python.
I have something like this:
aList=[['a','b'], ['a', 'b','c'], ['a']]
and i would like the following:
unique_values=['a','b','c']
I know that for a list of strings you can just use set(aList), but I can’t figure how to solve this in a list of lists, since set(aList) gets me the error message
unhashable type: 'list'
How can i solve it?
Answers:
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))
You can use numpy.unique:
import numpy
import operator
print numpy.unique(reduce(operator.add, [['a','b'], ['a', 'b','c'], ['a']]))
# ['a' 'b' 'c']
Try to this.
array = [['a','b'], ['a', 'b','c'], ['a']]
res=()
for item in array:
res = list(set(res) | set(item))
print res
Output:
['a', 'c', 'b']
The 2 top voted answers did not work for me, I’m not sure why (but I have integer lists). In the end I’m doing this:
unique_values = [list(x) for x in set(tuple(x) for x in aList)]
I want to create a list (or set) of all unique values appearing in a list of lists in python.
I have something like this:
aList=[['a','b'], ['a', 'b','c'], ['a']]
and i would like the following:
unique_values=['a','b','c']
I know that for a list of strings you can just use set(aList), but I can’t figure how to solve this in a list of lists, since set(aList) gets me the error message
unhashable type: 'list'
How can i solve it?
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))
You can use numpy.unique:
import numpy
import operator
print numpy.unique(reduce(operator.add, [['a','b'], ['a', 'b','c'], ['a']]))
# ['a' 'b' 'c']
Try to this.
array = [['a','b'], ['a', 'b','c'], ['a']]
res=()
for item in array:
res = list(set(res) | set(item))
print res
Output:
['a', 'c', 'b']
The 2 top voted answers did not work for me, I’m not sure why (but I have integer lists). In the end I’m doing this:
unique_values = [list(x) for x in set(tuple(x) for x in aList)]