Код вроде верный, но не проходит скрытые тесты в обучающей программе

Доброй ночи. Поставлена следующая задача: Дан список стран и городов каждой страны. Затем даны названия городов. Для каждого города укажите, в какой стране он находится.

Программа получает на вход количество стран N. Далее идет N строк, каждая строка начинается с названия страны, затем идут названия городов этой страны. В следующей строке записано число M, далее идут M запросов — названия каких-то M городов, перечисленных выше.

Для каждого из запроса выведите название страны, в котором находится данный город.

введите сюда описание изображения

Написала код, приведенный ниже. Вроде на всех данных, которые я ввожу, программа работает. При загрузке в тестирующую систему не засчитывает результат, говорит, что не пройдены скрытые тесты. Причем в качестве примера выгружает тот массив данных, на которых тест как раз пройден. Как понять, что им не нравится? Мои догадки, что название страны может писаться не одним словом, а через пробел, напр. The United States of America или The United Kingdom. Помогите, пожалуйста, разобраться.

n = int(input())
CountryCity = {}
CityList = []
for i in range(n):
    a = input().split()
    CountryCity[a[0]] = list(a[1:])
m = int(input())
for j in range(m):
    CityList.append(input())
for x in range(0, len(CityList)):
    for key in CountryCity:
        if CityList[x] in CountryCity[key]:
            print(key)

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

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

Я бы сделал наоборот:

словарь городов - где каждому городу в соответствие поставлена страна

n = int(input())

cities = dict()

for i in range(n):
    info = input().split()
    for city in info[1:]:
        cities[city] = info[0]

m = int(input())

res = []

for i in range(m):
    city = input()
    res.append(cities[city])
    
print(*res, sep='\n')

вывод такой хитрый сделал, потому что иногда в тестах вывод требуется только после ввода всей информации

P.S.

касательно почему алгоритм даёт сбой на некоторых тестах, то думаю

  1. вряд ли страны состоят из нескольких слов иначе это было бы в условии, да и как определить такую страну и отделить ее от города

  2. возможно, что город с одним и тем же названием есть в нескольких странах и требуется вывести только 1 страну - в вашем коде вывод всех стран с городом будет

  3. возможно вводятся города, которых не было в списках и надо добавлять проверку на это - чтобы программа не падала

P.P.S.

кстати ваш код, если выкинуть лишние вызовы, трамбуется в такой:

n = int(input())

CountryCity = {}
CityList = []

for i in range(n):
    a = input().split()
    CountryCity[a[0]] = a[1:]

m = int(input())

for j in range(m):
    CityList.append(input())

for city in CityList:
    for key in CountryCity:
        if city in CountryCity[key]:
            print(key)
→ Ссылка