result = {}
f = lambda t: len(t[1])
for length, groups in itertools.groupby(sorted(list(name_num.items()), key=f), key=f
    ):
    result[length] = dict((k, v) for k, v in groups)
print(result)
Как добавить несколько значений к ключу в словаре Python