Расстановка приоритетов с помощью кучи Python
Код должен формировать словарь priority
и добавлять приоритет значениям словаря с помощью кучи. А по определённому запросу необходимо вернуть наибольшее по приоритету и по номеру значение
Я проверяю, что в начальном запросе promt
.
Если номер задачи 'task'
- я добавляю её название task
и её номер task_is
в словарь, а после даю этой задаче соответствующий приоритет pri
, формируя макс-кучу через отрицательное значение приоритета -1 * pri
.
Когда поступает команда 'take'
, я удаляю максимальное значение и возвращаю его в виде f-строки
:
f'Задача {num_is} с приоритетом {-1 * pri_is}'
Но при этом не выполняется условие, что при запросе 'take'
должно возвращаться не только наибольший приоритет, но и номер.
Не могу понять как отсортировать по данному условию при запросе, подскажите, где заблуждаюсь
Код:
from heapq import heappop, heappush, heapify
heap = []
heapify(heap)
priority = {}
while (promt := input()) != 'end':
if 'task' in promt:
task = promt.split(',')[0]
task_is = int(task.split()[1])
pri = int(promt.split(',')[1])
priority[task] = task_is
heappush(heap, (priority[task], -1 * pri))
elif 'take' in promt:
pop_is = heappop(heap)
num_is = pop_is[0]
pri_is = pop_is[1]
print(f'Задача {num_is} с приоритетом {-1 * pri_is}')
Входящие данные:
task 101,5
task 10,5
task 10,3
task 1,6
task 2,2
take
take
task 10,10
take
take
end
Итог:
Correct output:
Задача 1 с приоритетом 6
Задача 101 с приоритетом 5
Задача 10 с приоритетом 10
Задача 10 с приоритетом 5
Your code output:
Задача 1 с приоритетом 6
Задача 2 с приоритетом 2
Задача 10 с приоритетом 10
Задача 10 с приоритетом 5