我正在寻找一种对包含分数names
和值names
的字典进行排序的方法,并根据最高分数对其进行排序。当两个人def ranking_people():
dictionary = {
score_player_one : player_one,
score_player_two : player_two,
score_player_three : player_three
}
sorted_dictionary = sorted(dictionary.items(), key = operator.itemgetter(0), reverse = True )
print("The ranking is: " + str(sorted_dictionary))
的分数相等时,字典将无法正确排序。该如何解决?
我是一个非常菜鸟的程序员。我已经在网上搜索过,但找不到答案。
{{1}}
我希望输出为:
排名是:[(19,'约翰1'),[19,爱丽丝2],(16,'鲍勃3')]
实际输出为:
排名是:[(19,'John'),(16,'Bob')]
答案 0 :(得分:1)
字典中的每个键都必须是唯一的。如果您这样做:
my_dict[19] = 'John'
my_dict[19] = 'Alice'
约翰被爱丽丝覆盖。您可能希望将名称用作键,将分数用作值,但前提是不要重复使用名称(“ John 1”和“ John 2”,而不是“ John”和“ John”)。
更新:
使用元组列表解决问题的示例解决方案,您可以使用重复的名称和分数:
from operator import itemgetter
def ranking_people():
scores = [(10, 'John'), (8, 'Alice'), (8, 'Bob'), (14, 'John')]
scores_sorted = sorted(scores, key=itemgetter(0))
print(scores_sorted)