擅长:python、mysql、java
<p>您可以复制dict,找到最大值,将键保存到列表中,从dict中删除键,然后再这样做,直到复制的dict为空。在</p>
<pre><code>import copy
scores = {'hawks': 23, 'eagles': 42, 'knights': 33, 'rabbits': 44} #this or read from .txt
scorescopy = copy.deepcopy(scores) #makes a copy of the dict, so you don't change the dict when deleting keys from the copy
rank = [] #the list in which we want the keys ranked by value
def keywithmaxval(scores): #finde the key with the highest value (stolen from another stackoverflow question)
values = list(scores.values())
keys = list(scores.keys())
return keys[values.index(max(values))]
while len(scorescopy) > 0: #repeats until copy of dict is empty
maxkey = keywithmaxval(scorescopy)
scorescopy.pop(maxkey) #deletes key from copy of dict
rank.append(maxkey) #puts key in the ranked list
print 'rank', rank #list of keys ranked by value
print 'copy of dict', scorescopy #copy of dict, should be empty after we looped trough
print 'original dict',scores #original dict, should be unchanged
print '\nRank:'
for key in rank: print key,':',scores[key] #pretty list of keys and vals
</code></pre>