У меня есть некоторое число, например 1200, и есть 2 списка: список значений, например [100,100,200,150,10,20], и список приоритетов [1,2,1,1,3,2]. Задача состоит в том, чтобы вычесть элементы списка из заданного числа (1200), пока оно больше 0, но прежде всего я должен вычесть элементы с рангом 1, затем с рангом 2 и так далее.
Единственная идея, которую я имею, состоит в сортировке элементов, но это выглядит неэффективно, особенно с большими наборами данных.
number = 500
values = [100,100,200,150,10,20]
priorities = [1,2,1,1,3,2]
df = pd.DataFrame({'values_subs': values,
'priorities': priorities
})
df.sort_values('priorities',inplace=True)
for i in df.values_subs:
number = number - i
if number < 0:
number = 0
break
print(number)