在python中对字典值进行排名

时间:2015-09-30 10:59:23

标签: python python-2.7 dictionary

我正在尝试根据它的值对我的字典进行排名。例如:

score = {'178413': 0.0, '178414': 0.0} 

操作后应

score = {'178413': 1.5, '178414': 1.5}

我试过

    import scipy.stats as ss
    temp = ss.rankdata(score.values())
    print temp
    temp = [1.5 1.5]`

所以得分的等级。值等于temp。我想在字典中替换相应的临时值,其中放置值 但似乎无法将其放回字典中。

**我试过的完整代码**

以下是方式,我把它放回字典中。我觉得这不是正确的

import scipy.stats as ss
score = {'178413': 3, '178414': 0.0}
inv_score = {y:x for x,y in score.iteritems()}
rank_val = ss.rankdata(score.values())

count = 0
for i in score.values():
    id = inv_score[i]
    score[id] = rank_val[count]
    count += 1

输出:得分= {'178413':2.0,'178414':1.0}

代码将失败,如果     输入得分为{'178413':0.0,'178414':0.0}

0 个答案:

没有答案