Код вроде верный, но не проходит скрытые тесты в обучающей программе
Доброй ночи. Поставлена следующая задача: Дан список стран и городов каждой страны. Затем даны названия городов. Для каждого города укажите, в какой стране он находится.
Программа получает на вход количество стран 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 шт):
Я бы сделал наоборот:
словарь городов - где каждому городу в соответствие поставлена страна
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 страну - в вашем коде вывод всех стран с городом будет
возможно вводятся города, которых не было в списках и надо добавлять проверку на это - чтобы программа не падала
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)
