Прежде всего, я бы использовал itertools, чтобы избежать слишком частого размещения моих циклов.Затем я заменяю исходные массивы, которые я перебираю, меньшими подмножествами, где это необходимо.Вот пример:
import itertools
day = ["Mon", "Tue", "Wed"]
time = ["7:00", "8:00", "9:00"]
team = ["Lakers", "Warriors", "Kings"]
month = ["Jan", "Feb", "Mar"]
city = ["LA", "SF", "Sac"]
time_filtered = ["8:00", ]
month_filtered = ["Jan", ]
for i, j, k, l, m in itertools.product(
day, time_filtered, team, month_filtered, city):
model += z[i,j,k,l,m] <= 0
Проблема с вашим кодом.когда вы используете «для x в итерируемом», вы получаете элементы этого итерируемого в x.Например, «for i in day» вернул бы «Mon» на первой итерации, а не 0. Итак, я бы сказал, что z [i, 1, k, 0, m] на самом деле z [i, «8:00»,k, "Jan", m].
Если вы хотите иметь индексы вместо значений, вы можете использовать range (len (iterable)).и [1,], [0,] для отфильтрованных значений.
что такое модель и что такое z, неясно из вашего кода.Ни один из них не похож на словари (вы ссылаетесь на словарь в заголовке).Вы имеете в виду списки в шапке?или есть какой-то скрытый дикт?? 1008 *