transpose = lambda mps: dict((x, key) for key, xs in maps.iteritems() for x in xs) transform = lambda lst, mps: [item in mps.keys() and mps[item] or item for item in lst] itransform = lambda lst, mps: sum([item in mps.keys() and mps[item] or [item] for item in lst], [])
#>>> import trans #>>> m = trans.transpose(trans.maps) ##>>> trans.transform(trans.list1, m) #['animal', 'animal', 'spam', 'egg'] #>>> s = set(trans.transform(trans.list1, m)) #>>> trans.itransform(trans.list1, trans.maps) #['cat', 'dog', 'spam', 'egg']