В исходном коде много странных мест. Например, странным и опасным образом опущенны запятые в описании словаря, опасное применение переменной dobav в ветке else... Это всё ведёт к небезопасному коду в плане понимания и будущих модификаций. Очевидна нехватка опыта.
Насчет приоритета операций вам уже ответили, но давайте попробуем провести поэтапный для ясности рефакторинг вашего кода.
Вот чему эквивалентно тело вашей функции:
def print_mimic(mimic_dict, word):
bred = []
x = 0
dobav = word
while x < 200:
if x == 0 or dobav in mimic_dict:
dobav = random.choice(mimic_dict[dobav])
else:
dobav = random.choice(mimic_dict[" "])
bred.append(dobav)
x += 1
print (bred)
return bred
Я понятия не имею что это за код и для чего он. Предыдущий рефакторинг я сделал оставив код эквивалентным исходному (за исключением исправления очевидных ошибок). Можно предположить, что в коде есть ещё ряд логических ошибок. Возможно поведение по ветке "x == 0" не должно отличаться от поведения по ветке else условия "dobav in mimic_dict", а вместо константы " " следовало тоже поставить word. Тогда код становится гораздо более простым, понятным и элегантным.
def print_mimic(mimic_dict, word):
bred = []
dobav = word
for x in range(200):
dobav = random.choice(mimic_dict.get(dobav, mimic_dict[" "]))
bred.append(dobav)
print (bred)
return bred