【问题标题】:Trying to print a specific key and value from dictionary based on user input尝试根据用户输入从字典中打印特定的键和值
【发布时间】:2021-09-25 06:48:15
【问题描述】:

我有一个程序要求我访问包含邮政编码和城市名称的字典

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')

【问题讨论】:

    标签: python dictionary


    【解决方案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
    

    注意:不要使用 ziplist 等名称。它们会影响 Python 内置函数。

    【讨论】:

      【解决方案2】:

      如下所示。这个想法是使用county_zips.get,如果给定的邮政编码没有城市,它将返回 None。

      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 引发 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')
          

          ~

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-02-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-12
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多