Если вы ищете способ ранжировать список значений с плавающей запятой, то это может сработать для вас:
import numpy as np
from scipy.stats import rankdata
n = 100 # Number of Ranks/Data points
sales = np.random.rand(n) # create random values between 0 and 1 of size n as fake sales
# Rank the data, reverse the order (highest Sale is lowest (=best) rank)
# and convert it to integer/list
sales_order = rankdata([-1 * sale for sale in sales]).astype(int).tolist()
for rank in range(n,0,-1): # count backwards from 100
print("Sale: {:5.4f} makes rank {:d}".format(sales[int(sales_order.index(rank))], rank))
Теперь sales[int(sales_order.index(rank))]
может сначала показаться запутанным. Sales_order
- список, содержащий рейтинг всех n
продаж. Поскольку продажи идут не в определенном порядке, их рейтинг не связан. Сначала он ищет индекс ранга 100, затем индекс ранга 99 и так далее. Возвращает продажу соответствующего ранга. Остальное просто отформатировать, чтобы получить такой вывод для n = 10
Sale: 0.1087 makes rank 10
Sale: 0.2955 makes rank 9
Sale: 0.3214 makes rank 8
Sale: 0.3531 makes rank 7
Sale: 0.4374 makes rank 6
Sale: 0.4744 makes rank 5
Sale: 0.5143 makes rank 4
Sale: 0.5892 makes rank 3
Sale: 0.7534 makes rank 2
Sale: 0.9390 makes rank 1
Вам нужно numpy и scipy, установленный в вашей среде python.