В результате линейной программы я получаю вложенный список из dict, который выглядит следующим образом:
lst = [['a0', 1, 'x_01', 'p_01', 39],
['a0', 1, 'x_01', 'p_02', 19],
['a0', 1, 'x_02', 'p_01', 10],
['a0', 1, 'x_02', 'p_02', 5],
['a1', 1, 'x_01', 'y_01', 'p_01', 5],
['a1', 1, 'x_01', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5]]
Любой тип 'a' указывает переменную, которая была решена для диапазона наборов(например, 1, 'x_01', 'p_01' и т. д.) со значением, представленным последним элементом списка.
Теперь задача состоит в том, чтобы создавать подсписки, содержащие только списки одной и той же переменной.(На следующем шаге они будут переданы в pd.df). Список списков может выглядеть примерно так или как-то так:
new_lst = [[['a0', 1, 'x_01', 'p_01', 39],
['a0', 1, 'x_01', 'p_02', 19],
['a0', 1, 'x_02', 'p_01', 10],
['a0', 1, 'x_02', 'p_02', 5]],
[['a1', 1, 'x_01', 'y_01', 'p_01', 5],
['a1', 1, 'x_01', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5]]]
То, что я пробовал до сих пор:
st0 = list(set([x[0] for x in lst]))
, чтобы получить все уникальные переменные.
И это, но, очевидно, не выполняет свою работу:
n = [x for x in lst for i in st0 if x[0]==i]
То, что я пытаюсь здесь, основано на чем-то вроде этого:
n1 = [x for x in lst if x[0]==st0[0]]
n2 = [x for x in lst if x[0]==st0[1]]
ii = [n1,n2]
В зависимости от размера модели у меня есть 10, 20 или более разных переменных разных размеров.Также модели необходимо запускать несколько раз для проверки различных параметров.
Жесткое кодирование возможно, но не желательно.Если у кого-то есть хорошая идея, пожалуйста, не стесняйтесь помочь мне в этом.