Изменения элементов массива по сдвигу

Наткнулся на интересную задачу. Есть массив с объектами

result = [
{"word" : "д1ом"},
{"word" : "Мы"},
{"word" : "купил2и"}
]

i = 0
while i < len(result):
    print(i)
    if result[i]["word"] == "Мы":
        if i == 0:
            result[0]['word'] = "Мы"
            result[1]['word'] = "купили"
            result[2]['word'] = "дом"
        elif i == 1:
            result[0]['word'] = "дом"
            result[1]['word'] = "Мы"
            result[2]['word'] = "купили"
        elif i == 2:
            result[0]['word'] = "купили"
            result[1]['word'] = "дом"
            result[2]['word'] = "Мы"
    i += 1

print(result)

Нам известно что в задаче "Мы" есть всегда. Нам нужно отталкиваясь от индекса найденного "Мы" поменять остальные индексы на купили и дом. Мой код работает, но выглядит оно сами понимаете как.. Как сделать красивее ?


Ответы (1 шт):

Автор решения: Кирилл Малышев
result = [
{"word" : "д1ом"},
{"word" : "Мы"},
{"word" : "купил2и"}
]
words = ['купили', 'дом']
start = [i for i, dct in enumerate(result) if dct["word"] == "Мы"][0]

for i, word in enumerate(words):
    result[(start + i + 1) % len(result)]['word'] = word

print(result)
→ Ссылка