можно немного по извращаться:
from itertools import groupby
from operator import itemgetter
def foo():
test = [{'inf':1, 'numb':'11'}, {'inf':1, 'numb':'99a'},
{'inf':2, 'numb':'22'}, {'inf':3, 'numb':'33'},
{'inf':3, 'numb':'33`2a'},
]
test.sort(key=itemgetter("inf")) # если заранее известно, что test отсортирован по "inf", то можно не делать
result = dict((k, [x["numb"] for x in g]) \
for k, g in groupby(test, key=itemgetter("inf")))
return result
либо Ваш же вариант, но более читаемо:
from collections import defaultdict
def foo():
test = [{'inf':1, 'numb':'11'}, {'inf':1, 'numb':'99a'},
{'inf':2, 'numb':'22'}, {'inf':3, 'numb':'33'},
{'inf':3, 'numb':'33`2a'},
]
result = defaultdict(list)
for i in test:
result[i["inf"]].append(i["numb"])
return result