Дано:
config = ['config_a001', 'config_a002', 'config_a003', 'config_a004','config_a005']
illuminnace = [350, 376, 260, 500, 450]
LUR_value = [0.3,0.24,.7,.1,.3]
Если «оптимизация» является самой высокой illuminnace
с самой низкой LUR_value
, вы можете сжать списки вместе, чтобы сформировать кортежи данных:
>>> list(zip(config,illuminnace,LUR_value))
[('config_a001', 350, 0.3), ('config_a002', 376, 0.24), ('config_a003', 260, 0.7), ('config_a004', 500, 0.1), ('config_a005', 450, 0.3)]
А затем сортируйте их с помощью функции key
:
>>> sorted(zip(config,illuminnace,LUR_value),key=lambda t: (-t[1],t[2]))
[('config_a004', 500, 0.1), ('config_a005', 450, 0.3), ('config_a002', 376, 0.24), ('config_a001', 350, 0.3), ('config_a003', 260, 0.7)]
Если вы хотите фильтровать, добавьте выражение после zip
, но перед sorted
, чтобы отфильтровать по соответствующим критериям:
>>> sorted((t for t in zip(config,illuminnace,LUR_value) if t[1]>=450),key=lambda t: (-t[1],t[2]))
[('config_a004', 500, 0.1), ('config_a005', 450, 0.3)]
Если у вас более сложные критерии группировки, либо напишите пользовательскую ключевую функцию для сортировки, которая выражает ее, либо рассмотрите возможность использования itertools.groupby .Данные вашего текущего примера недостаточно полны, чтобы привести пример.