Grouping with dictionaries
d = {}
for name in names:
key = len(name)
if key not in d:
d[key] = []
d[key].append(name)
# slightly better
d = {}
for name in names:
key = len(name)
d.setdefault(key, []).append(name)
# way better
from collections import defaultdict
d = defaultdict(list)
for name in names:
key = len(name)
d[key].append(name)