I find myself frequently making indexed lists from flat ones in Python. This is such a common task that I was wondering if there's a standard utility that I should be using for it.
The context is this: given an array, I need to create a dict of smaller arrays using some key for grouping.
e.g:
["Andy","Alice","Bob","Beth","Charlie"] becomes
{"A":["Andy","Alice"],"B":["Bob","Beth"],"C":["Charlie"]}
My solution looks like this:
def make_index(data,key,value=lambda x:x):
d={}
for item in data:
k = key(item)
v = value(item)
try: d[k].append(v)
except KeyError: d[k]=[v]
return d
It's simple and all, but am I reinventing something that is implemented better elsewhere?