from collections import defaultdict omg = ['a', 'b', 'c', 'a', 'b', 1] d = defaultdict(lambda: len(d)) # late binding allows d not to be defined yet omg_id = [d[x] for x in omg] # [0, 1, 2, 0, 1, 3]