Как правильно использовать два цикла в 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 и затем добавить их в первый и второй списки. Надеюсь, это поможет

Вернуться на верх