Как вывести имена, чтобы они шли по порядку с зависимостью от данных введенных в переменных?

Формат ввода
В первой строке записана средняя скорость Пети.
Во второй — Васи.
В третьей — Толи.

Формат вывода
Имена победителей в порядке занятых мест.

Код корректно выводит сортированные цифры, но я не понимаю как привязать к вводимым и сортируемым цифрам скорости имена, чтобы они на выходе тоже сортировались.
В коде ниже закомментированные попытки присвоить имена значениям. На выходе нет сортировки.

a = int(input())
b = int(input())
c = int(input())
a,b,c = sorted([a, b, c], reverse = True)
# a = 'Петя'
# b = 'Вася'
# c = 'Толя'
print('1. ' + a)
print('2. ' + b)
print('3. ' + c)

Судя по всему, когда я после сортировки пытаюсь определить новое строчное значение переменным сортировка выше просто убивается.


Ответы (3 шт):

Автор решения: MBo

С использованием кортежей (tuple):

a = (int(input()), "Петя")
b = (int(input()), "Вася")
c = (int(input()), "Толя")
l = sorted([a, b, c], reverse = True)
for x in l:
   print(x[1], x[0])

С номерами:

for i, x in enumerate(l):
   print(i+1, '. ', x[1], sep='')
→ Ссылка
Автор решения: Павел

В Python есть такая структура данных, как словарь: dictionary, она содержит элементы вида ключ-значение. Для того, чтобы получить то, что вы хотите она подходит наилучшим образом, поскольку вы можете указать соответствие между именем и скоростью.

Советую ознакомиться с документацией по этой структуре данных.

Вот как можно записать код, используя словарь:

speeds = {} # dict
speeds['Петя'] = int(input())
speeds['Вася'] = int(input())
speeds['Толя'] = int(input())

sorted_speeds = sorted(speeds.items(), key=lambda x: x[1], reverse=True)

for name, speed in sorted_speeds:
    print(name, speed)

Вывод:

3
17
8

Вася 17
Толя 8
Петя 3
→ Ссылка
Автор решения: None None

Спустя день раздумья, я нашел правильный код, соответсвующий теме

a = int(input())
b = int(input())
c = int(input())
if a > b and a > c:
    print("1. Петя")
elif b > a and b > c:
    print("1. Вася")
elif c > a and c > b:
    print("1. Толя")
if a > b > c or c > b > a:
    print("2. Вася")
elif b > a > c or c > a > b:
    print("2. Петя")
elif a > c > b or b > c > a:
    print("2. Толя")
if a < b < c or a < c < b:
    print("3. Петя")
elif b < a < c or b < c < a:
    print("3. Вася")    
elif c < a < b or c < b < a:
    print("3. Толя") 
→ Ссылка