【发布时间】:2012-11-26 01:41:15
【问题描述】:
是否有更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 dictionary values sorting
【问题讨论】:
-
@the_wolf 感谢您指出这一点。我的代码中没有。我试图把事情说清楚
标签: python