Как сделать так, чтобы каждый город записывался в отдельный лист

У меня есть код, в который пользователь пишет количество стран, их названия, количество городов и их названия. На данный момент он выглядит так:

n = int(input('Напиши количество стран: \n'))
A = []
x = 1
while x != n+1:
  w = input('Напиши название страны ')
  A.append(w)
  print (x, ' из ', n)
  x += 1
print(A)
q = int(input('Введите количество городов в странах(к примеру если у тебя 4 города в Украине и 4 в России, сюда ты тоже пишешь 4)'))
Y = []
v = 1
while v != q+1:
  for i in range(len(A)):
    print('Введите название ', v,' из ', q, ' города в стране', A[i])
    rt = input()
    Y.append(rt)
    v += 1

И при вводе данных:

2
Россия
Китай
2

Мой код говорит:

Введите название 1 из 2 города в стране Россия
Введите название 2 из 2 города в стране Китай

Я же хочу, чтобы он просил у пользователя сначала ввести 2 российских города, а потом 2 китайских и всё это записывал в общий лист скажем k, либо в идеале чтобы у каждой страны был свой лист, но я не знаю как это реализовать. Что я делаю не так?


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

Автор решения: Tilex

Рекомендую использовать циклы for вместо while в случае итераций с константным шагом Для хранения городов именно в списках можно для каждой страны создать список с его городами, на позиции i в листе Y будет список с городами страны i.

n = int(input('Напиши количество стран: \n'))
A = []

for x in range(n):
    w = input('Напиши название страны ')
    A.append(w)
    print (x+1, ' из ', n)

print(A)
q = int(input('Введите количество городов в странах(к примеру если у тебя 4 города в Украине и 4 в России, сюда ты тоже пишешь 4)'))
Y = [[] for i in range(n)]

for i in range(len(A)):
    for j in range(q):
        print('Введите название ', j+1,' из ', q, ' города в стране', A[i])
        rt = input()
        Y[i].append(rt)
→ Ссылка
Автор решения: idrees

Можно сделать ввод списками

list_country = [lc.strip() for lc in input('Введите список стран (через запятую): \n').split(',')]

data = {}
for lc in list_country:
    list_city = [lc.strip() for lc in input('Введите список городов страны '+lc+' (через запятую): \n').split(',')]
    data[lc] = list_city

или так

cnt_country = int(input('Количество стран: \n'))
list_country = {input('Введите страну №'+str(lc+1)+': \n'):input('Кол-во городов: \n') for lc in range(cnt_country)}

for key, value in list_country.items():
    list_city = [input('Город №'+str(i)+' страны '+str(key)+': \n') for val, i in enumerate(range(int(value)))]
    list_country[key] = list_city

print(list_country)
→ Ссылка