from collections import defaultdict import numpy def show_languages(args, name, start_date, end_date, people, days): devlangs = defaultdict(lambda: defaultdict(lambda: numpy.zeros(3, dtype=int))) for day, devs in days.items(): for dev, stats in devs.items(): for lang, vals in stats.Languages.items(): devlangs[dev][lang] += vals devlangs = sorted(devlangs.items(), key=lambda p: -sum(x.sum() for x in p[1].values())) for dev, ls in devlangs: print() print("#", people[dev]) ls = sorted(((vals.sum(), lang) for lang, vals in ls.items()), reverse=True) for vals, lang in ls: if lang: print("%s: %d" % (lang, vals))