Попытка напечатать определенный ключ и значение из словаря на основе пользовательского ввода

#python #dictionary

Вопрос:

У меня есть программа, которая требует, чтобы я получил доступ к словарю с почтовыми кодами и названиями городов под названием

 countyzips = {'90210': 'Beverly Hills', '90001' : 'Los Angeles', etc.}
 

Если почтовый индекс есть в словаре , я хочу, чтобы программа напечатала, например, «почтовый индекс = 90210, город = Беверли-Хиллз». И если почтового индекса нет в словаре, выведите «почтовый индекс xxxxx находится не в округе Лос-Анджелес. Прямо сейчас я, кажется, не могу заставить программу работать.

Вот мой код до сих пор

  zip = input('enter zip code:')
        for x,y in countyzips.items():
            if x in countyzips:
                print (f'zipcode = {x} , city = {y}')
            else:
                print (f'zip code = {x} not in Los Angeles county')
 

Ответ №1:

Вы можете использовать простой in оператор, чтобы проверить, есть ли ключ в словаре:

 countyzips = {"90210": "Beverly Hills", "90001": "Los Angeles"}

zip_ = input("enter zip code:")

if zip_ in countyzips:
    print(f"zip code = {zip_}, city = {countyzips[zip_]}")
else:
    print(f"zip code = {zip_} is not in Los Angeles County")
 

Отпечатки (например):

 enter zip code:90210
zip code = 90210, city = Beverly Hills
 

Примечание: не используйте такие имена , как zip и list т. Д. Они теневые, встроенные в Python.

Ответ №2:

Что — то вроде приведенного ниже. Идея состоит в том, чтобы использовать county_zips.get это, которое не вернет ничего, если для данного почтового индекса нет города.

 county_zips = {'90210': 'Beverly Hills', '90001': 'Los Angeles'}

zip_ = input('Type the zip please:')
city = county_zips.get(zip_)
if city is not None:
    print(f' The zip code {zip_} belongs to the city {city}')
else:
    print(f'The zip code {zip_} does not belong to a city in L.A county')
 

Ответ №3:

При условии, что у вас нет ошибок отступов , ваш код не работает, потому что вы перебираете каждую пару ключ/значение в словаре как x,y и проверяете, действительно ли x это действительный почтовый индекс. На самом деле вы ничего не проверяете о введенном почтовом индексе ( zip ).

Примечание: вы не должны использовать имена встроенных функций в Python, например zip , в качестве имен переменных. Выбери что-нибудь, что еще не использовалось, например zipcode .

Рабочая версия:

 countyzips = {'90210': 'Beverly Hills', '90001' : 'Los Angeles'}

zipcode = input('enter zip code:')
if zipcode in countyzips:
    print (f'zipcode = {zipcode} , city = {countyzips[zipcode]}')
else:
    print (f'zip code = {zipcode} not in Los Angeles county')
 

Ответ №4:

dict вызывает a KeyError , если ключа нет в словаре. Используйте это в своих интересах.

 countyzips = {'90210': 'Beverly Hills', '90001' : 'Los Angeles'}
zipcode = input('enter zip code:')
try:
    print(f'zipcode = {zipcode} , city = {countyzips[zipcode]}')
except KeyError:
    print(f'zip code = {zipcode} not in Los Angeles county')
 

~