0

我想按分数对字典进行排序。如果分数相同,则按名称对其进行排序

{ 
'sudha'  : {score : 75} 
'Amruta' : {score : 95} 
'Ramesh' : {score : 56} 
'Shashi' : {score : 78} 
'Manoj'  : {score : 69} 
'Resham'  : {score : 95} 
} 

帮助请谢谢。

4

2 回答 2

6

我认为这应该工作......

sorted(yourdict,key=lambda x:(yourdict[x]['score'],x))

它通过比较元组(分数,名称)来工作。元组比较查看第一项——如果它们相同,则查看第二项,依此类推。所以,(55,'jack') > (54,'lemon) 和 (55,'j') < (55,'k')。

当然,这yourdict会按所需的顺序返回 的键——因为字典没有顺序的概念,所以实际上无法对字典进行排序。

于 2012-05-23T13:36:36.040 回答
4
d = { 
'sudha'  : {'score' : 75},
'Amruta' : {'score' : 95},
'Ramesh' : {'score' : 56}, 
'Shashi' : {'score' : 78}, 
'Manoj'  : {'score' : 69}, 
'Resham'  : {'score' : 95}, 
} 

sorted(d, key=lambda x: (d[x]['score'], x))

返回:

['Ramesh', 'Manoj', 'sudha', 'Shashi', 'Amruta', 'Resham']
于 2012-05-23T13:36:47.493 回答