Как правильно использовать два цикла в python
Привет ребята у меня проблема
Вот мой код :
services = {
'first':[],
'second':[]
}
x = [1,2,3,4,5]
for i in services:
print('loop-one - ',i)
for i in x:
services['first'].append(i)
print(services)
Выходом этого кода является {'first': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5], 'second': []}
.
Если вы заметили, он добавил два раза .
Моя цель примерно такая, я хочу добавить один раз
{'first': [1, 2, 3, 4, 5], 'second': []}
Спасибо!
Внутренний цикл for
использует ту же переменную цикла i
, что и внешний цикл. Это означает, что значение i
перезаписывается с каждой итерацией внутреннего цикла, а конечное значение i
используется для обновления словаря служб.
Вот как вы можете написать свой код, чтобы правильно итерировать оба индекса:
services = {
'first':[],
'second':[]
}
x = [1,2,3,4,5]
for service in services:
print('loop-one - ', service)
for i in x:
services[service].append(i)
print(services)
Ваша проблема заключается в том, что во внешнем цикле вы выполняете итерацию над словарем services
. Словарь services
содержит две пары ключ-значение, для которых вы затем выполняете итерацию над первой парой ключ-значение и добавляете результат к "первой" паре ключ-значение списка. Могу я спросить, почему вы просто не сделаете что-то подобное, если ваш желаемый результат {'first': [1, 2, 3, 4, 5], 'second': []}?
Более простой способ сделать это с помощью одного цикла for выглядит следующим образом. Вы можете найти документацию по методу extend здесь https://docs.python.org/3/tutorial/datastructures.html:
for service in services:
services[service].extend(x)
Является ли требованием наличие 2 петель? Мне просто интересно.
Если да, то можно попробовать такой синтаксис:
for service in services:
print('loop-one - ',service)
for num in x:
services[service].append(num)
print(services)
Я предполагаю, что вы пытаетесь записать данные из массива/списка x
и затем добавить их в первый и второй списки. Надеюсь, это поможет