Этот пост должен быть в виде комментария к вашему вопросу, так как это просьба к Вам для уточнения вашего сообщения больше. Но у меня нет достаточной репутации, поэтому она появляется здесь.
Первое состоит в том, что function sorted взять iterable, такие как список, массив и строки в качестве параметра. Кажется, что ваш ListData
- это словарь . Поэтому необходимо, чтобы вам сначала нужно преобразовать данные в соответствующую форму.
Какова конечная формула x[][ValidTill]
, x[][Amount]
и их percentage
являются параметрами? Например, вы имеете в виду сумма из них? Если да, то ниже приведена процедура:
# python ver 3.5. Note that the below code need to be adjusted
# a little bit to be able to run on python 2.x.
import random
ListData = {
'AvailableOffers': {
'ValidTill': [random.randint(1,10) for i in range(100)],
'Amount': [random.randint(1,10) for i in range(100)]
}}
# Convert from dictionary to list
ListDataIter = list(zip(ListData['AvailableOffers']['ValidTill'], ListData['AvailableOffers']['Amount']))
# Now let have the percentage parameter inputted by users
FirstParam, SecondParam = 0.4, 0.6
# Sorting ListDataIter
sorted(ListDataIter, key=lambda x: x[0] * FirstParam + x[1] * SecondParam, reverse=True)[:10]
[(10, 10),
(10, 10),
(9, 10),
(9, 10),
(9, 10),
(10, 9),
(7, 10),
(7, 10),
(8, 9),
(9, 8)]
Что именно делают весы при сортировке? – Lucas
Вы хотите отфильтровать затем сортировку или это проценты, которые должны быть порогом для сортировки? –
[: 10], поскольку вы можете видеть, что операторы возвращают только первую десятку, которая сортируется по двум условиям, так что я хочу, если пользователь говорит, что мне нужно 60% для одного параметра, который имеет значение для принятия 6 возвращаемых элементов и 4 к другому! – MUHAMMAD