Skip to content
Advertisement

Python – Flatten a dict of lists into unique values?

I have a dict of lists in python:

content = {88962: [80, 130], 87484: [64], 53662: [58,80]}

I want to turn it into a list of the unique values

[58,64,80,130]

I wrote a manual solution, but it’s a manual solution. I know there are more concise and more elegant way to do this with list comprehensions, map/reduce , itertools , etc. anyone have a clue ?

content = {88962: [80, 130], 87484: [64], 53662: [58,80]}
result = set({})
for k in content.keys() :
    for i in content[k]:
        result.add(i)
# and list/sort/print just to compare the output
r2 = list( result )
r2.sort()
print r2

Advertisement

Answer

Double set comprehension:

Python 3:

sorted({x for v in content.values() for x in v})

Python 2:

sorted({x for v in content.itervalues() for x in v})
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement