a = {0: \'PtpMotion\', 1: \'PtpMotion\', 2: \'LinMotion\', 3: \'LinMotion\', 4: \'LinMotion\', 5: \'LinMotion\', 6: \'LinMotion\', 7: \'LinMotion\', 8: \'LinMotion\', 9:
When you say
b[val] = key
and val already exists,it overrides the setting, getting what you see. To get all values, you must map the original values to lists of keys, such as
from collections import defaultdict
b = defaultdict(list)
for key, val in a.items():
b[val].append(key)
print b
When I do it (python 2.5.1), I get
defaultdict(, {'LinMotion': [2, 3, 4, 5, 6, 7, 8, 10],
'PtpMotion': [0, 1, 9],
'Wait': [11]})