как пройтись по ключам словаря когда они списки
countries = {
"Sweden": ["Stockholm", "Göteborg", "Malmö"],
"Norway": ["Oslo", "Bergen", "Trondheim"],
"England": ["London", "Birmingham", "Manchester"],
"Germany": ["Berlin", "Hamburg", "Munich"],
"France": ["Paris", "Marseille", "Toulouse"]
}
count = 0
city = input()
for i in countries:
if city == i:
print(i)
else:
count +=1
if count == 4:
print(f"ERROR: Country for {city} not found")
Есть такой вот код, мне нужно пройтись по каждому ключу и проверить наличие там указанного города
Если сделать так:
for i in countries("Sweden"):
То искать будет в пределах ключа Sweden, как мне пройтись по каждому из елементов?
Метод решения только через словарь
Ответы (2 шт):
Автор решения: Dmitry
→ Ссылка
вы можете воспользоваться методом items() для словарей. Например:
countries = {
"Sweden": ["Stockholm", "Göteborg", "Malmö"],
"Norway": ["Oslo", "Bergen", "Trondheim"],
"England": ["London", "Birmingham", "Manchester"],
"Germany": ["Berlin", "Hamburg", "Munich"],
"France": ["Paris", "Marseille", "Toulouse"]
}
def search(city):
for key, value in countries.items():
if city in value:
return f"City in {key}"
return f"ERROR: Country for {city} not found"
if __name__ == "__main__":
city = input()
print(search(city))
Автор решения: CrazyElf
→ Ссылка
Как вариант, можно сразу составить обратный словарь город -> страна и брать информацию из него:
countries = {
"Sweden": ["Stockholm", "Göteborg", "Malmö"],
"Norway": ["Oslo", "Bergen", "Trondheim"],
"England": ["London", "Birmingham", "Manchester"],
"Germany": ["Berlin", "Hamburg", "Munich"],
"France": ["Paris", "Marseille", "Toulouse"]
}
cities = {city:country for country,cities in countries.items() for city in cities}
city = input()
country = cities.get(city)
print(f'{city} is in {country}' if country else f'ERROR: Country for {city} not found')