辞書を値でランク付けし、一意でない値のランクを平均したい、よりPythonicで高速な方法はありますか。私のアプローチ:
d = {'a':5,'b':5,'c':5,'d':1,'e':6}
ordered_keys = sorted(d, key=d.get)
ordered_v = [d[k] for k in ordered_keys]
value_rank = [(ordered_v.index(v)+1)+(ordered_v.count(v)-1)/2 for v in ordered_v]
ranked_key_list = zip(ordered_keys,value_rank)
[('d', 1), ('a', 3), ('c', 3), ('b', 3), ('e', 5)]
辞書の並べ替えに関するこの広範な議論は非常に役に立ちました: python 辞書の値の並べ替え