Если вы хотите использовать внешнюю библиотеку, я могу порекомендовать только ranking
:
import ranking
# Each player and their scores.
score_list = [
('David', 89),
('James', 56),
('Matt', 72),
('John', 91),
('Iva', 56),
('Anna', 91),
]
# Helper for accessing a score record's score,
# defined here as we need it twice.
get_score = lambda pair: pair[1]
# Sort the scores in place; required by `ranking`.
score_list.sort(key=get_score, reverse=True)
# Define a format string; handy for formatting both the header and the scores.
format_str = "{player:10} {score:<10} {rank}"
# Print header.
print(format_str.format(player="Player", score="Score", rank="Position"))
# Rank and print.
for rank, (player, score) in ranking.Ranking(score_list, key=get_score, start=1):
print(format_str.format(rank=rank, player=player, score=score))
выходы
Player Score Position
John 91 1
Anna 91 1
David 89 3
Matt 72 4
James 56 5
Iva 56 5