Изменения элементов массива по сдвигу
Наткнулся на интересную задачу. Есть массив с объектами
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)