inverting a dictionary of lists

bpowah at bpowah at
Fri Jun 15 05:20:33 CEST 2007

I searched for an hour and don't see a solution to this (i assume
somewhat common) problem.

I have a very large dictionary of lists:
d = {a:[1,2], b:[2,3], c:[3]}
and i want to reverse the associativity of the integers thusly:
inverse(d)   makes   {1:[a], 2:[a,b], 3:[b,c]}

my solution expands the original dict into two lists of keys and list
list1:  [a,a,b,b,c]
list2:  [1,2,2,3,3]
then recombines them with the reverse operation.

but this takes too much time and a lot of memory.
I wonder if anyone can point me to a more efficient solution?

More information about the Python-list mailing list