当某些值相等时如何排序字典?

时间:2019-05-15 21:39:02

标签: python python-3.x

我正在寻找一种对包含分数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')]

1 个答案:

答案 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)