Вы можете сначала получить уникальные имена, а затем пройтись по каждому имени, группируя файлы под именем.
# store the names (the keys of the new dict) as a set (keeps elements unique)
names = set(files.values())
# use a list comprehension, iterating through keys and checking the values match each n
d = {}
for n in names:
d[n] = [k for k in files.keys() if files[k] == n]
Вы также можете выбрать диктовку:
d = {n:[k for k in files.keys() if files[k] == n] for n in set(files.values())}
Результат:
{'Stan': ['Code.py'], 'Randy': ['Input.txt', 'Output.txt']}
Nabble и Gmane и архивируют списки рассылки и обеспечивают каналы RSS. Если это - список рассылки разработки существует хороший шанс, это уже заархивировано там. Иначе Вы можете сделать, чтобы Nabble заархивировал список рассылки. Я сделал бы это перед прохождением через боли реализации Вашего собственного решения.