Я пытаюсь l oop внутри словаря с тремя ключами и изменить категорию значений (Bmax в данном случае). Основная цель состоит не в том, чтобы изменять значения самого словаря, а в том, чтобы l oop через словарь и получить его значения. Он мне нужен, чтобы потом сформулировать задачу оптимизации. Для этого я использую «дополнительные словари» (UNITS_DI C и TASKS_DI C). Эта идея работает в словаре с двумя ключами. Теперь мне нужно расширить его еще на три или более ключей.
UNIT_TASKS = {
('Heater', 'Heating', 'Pablo') : {'Bmin': 0, 'Bmax': 100},
('Reactor_1', 'Reaction_1', 'Juan'): {'Bmin': 0, 'Bmax': 80},
('Reactor_1', 'Reaction_2', 'Pedro'): {'Bmin': 0, 'Bmax': 80},
('Reactor_1', 'Reaction_3', 'Pablo'): {'Bmin': 0, 'Bmax': 80},
('Reactor_2', 'Reaction_1', 'Pablo'): {'Bmin': 0, 'Bmax': 80},
('Reactor_2', 'Reaction_2', 'Juan'): {'Bmin': 0, 'Bmax': 80},
('Reactor_2', 'Reaction_3', 'Pablo'): {'Bmin': 0, 'Bmax': 80},
('Still', 'Separation', 'Pablo'): {'Bmin': 0, 'Bmax': 200},
('Heater', 'Heating', 'Juan') : {'Bmin': 0, 'Bmax': 300},
}
TASKS = set([i for (j,i,k) in UNIT_TASKS])
UNITS = set([j for (j,i,k) in UNIT_TASKS])
NAMES = set([k for (j,i,k) in UNIT_TASKS])
# Auxiliar dictionaries
UNITS_DIC = {j: set() for j in UNITS}
for (j,i,k) in UNIT_TASKS:
UNITS_DIC[j].add(i)
TASKS_DIC = {i: set() for i in TASKS}
for (j,i,k) in UNIT_TASKS:
TASKS_DIC[i].add(k)
####Looping inside Dictionary
for j in UNITS:
for i in UNITS_DIC[j]:
for k in TASKS_DIC[i]:
UNIT_TASKS[(i,j,k)]['Bmax'] = 2
####Print Dictionary
for key,value in UNIT_TASKS.items():
print(key,value)