Python 通过用户输入从字典中搜索值

Python 通过用户输入从字典中搜索值,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我编写了以下代码,用于获取给定城市中各个地区及其各自邮政编码的输出。我希望我的代码能够接收来自用户(地区名称)的输入,并输出其所在城市及其邮政编码。如果用户输入邮政编码,他们将获得相应的地区 输出: Enter your district: X District {'C District': ('Trap City', 100), 'D District': ('Zap City', 201), 'E District': ('Trap City', 104), 'S District': (

我编写了以下代码,用于获取给定城市中各个地区及其各自邮政编码的输出。我希望我的代码能够接收来自用户(地区名称)的输入,并输出其所在城市及其邮政编码。如果用户输入邮政编码,他们将获得相应的地区

输出:

Enter your district: X District
{'C District': ('Trap City', 100), 'D District': ('Zap City', 201), 'E 
District': ('Trap City', 104), 'S District': ('Trap City', 105), 'R 
District': ('Zap City', 200), 'X District': ('Los City', 207), 'Y 
District': ('Los City', 208)}
{100: 'C District', 103: 'D District', 104: 'E District', 105: 'S 
District', 200: 'R District', 201: 'D District', 207: 'X District', 
208: 'Y District'}
>>> 

该程序只是转储所有信息,而不是搜索值?

该程序只执行两条打印语句
print(d_区)
print(d_区)
,您实际上只是转储
zipcode
字典的内容。您的第一个print语句永远不会达到,因为条件永远不会满足。您必须与字典的值进行比较,而不是与字典的键进行比较

对于相反的情况,您可以检查用户输入的字符串是否为数字,如果是这种情况,您只需以相同的方式搜索zipcode

mydistrict=input('Enter your district: ')

if mydistrict.strip().isnumeric():
    for city in zipcode:
        for district in zipcode[city]:
            if zipcode[city][district] == int(mydistrict.strip()):
                print(city,zipcode[city][district])
else:
    for city in zipcode:
        if mydistrict in zipcode[city]:
            print(city,zipcode[city][mydistrict])

谷歌搜索结果。我不懂python。可能仅适用于此示例:请尝试:

import pandas as pd
import re

 def get_dis_cit():
    zpdf =pd.DataFrame(zipcode)#zipdataframe
    inpt =  input('Enter your zip code or your district: ')

    if inpt.isnumeric(): 
        zpdf = zpdf==int(inpt)
        district = list(zpdf.columns[zpdf.any()]) + list(zpdf.index[zpdf.T.any()])
        return dict(zip(["city","District"], district))
    else:
       district = re.search('\\b'+inpt+"[^']*",str(zipcode),re.I).group()
       city = list(zpdf.loc[district].dropna().index)
       return dict(zip(city, [district] * len(city)))
结果 数据:
您的输入不明确
D区
同时出现在
Trap City
Zap City
中。它到底出现在哪一个地方?或者,在这种情况下,您想要什么作为您想要的输出。现在,如果用户输入邮政编码,我如何获得代码以输出所在的地区和城市?
import pandas as pd
import re

 def get_dis_cit():
    zpdf =pd.DataFrame(zipcode)#zipdataframe
    inpt =  input('Enter your zip code or your district: ')

    if inpt.isnumeric(): 
        zpdf = zpdf==int(inpt)
        district = list(zpdf.columns[zpdf.any()]) + list(zpdf.index[zpdf.T.any()])
        return dict(zip(["city","District"], district))
    else:
       district = re.search('\\b'+inpt+"[^']*",str(zipcode),re.I).group()
       city = list(zpdf.loc[district].dropna().index)
       return dict(zip(city, [district] * len(city)))
get_dis_cit()

Enter your zip code or your district: 100
Out[71]: {'city': 'Trap City', 'District': 'C District'}

get_dis_cit()

Enter your zip code or your district: 200
Out[72]: {'city': 'Zap City', 'District': 'R District'}

get_dis_cit()

Enter your zip code or your district: r dist
Out[73]: {'city': 'Zap City', 'District': 'R District'}

get_dis_cit()

Enter your zip code or your district: Y DISTRICT
Out[74]: {'city': 'Los City', 'District': 'Y District'}

get_dis_cit()

Enter your zip code or your district: D dist
Out[75]: {'Trap City': 'D District', 'Zap City': 'D District'}
zipcode = {
    "Trap City": {
        "C District": 100,
        "D District": 103,
        "E District": 104,
        "S District": 105
    },
    "Zap City": {
        "R District": 200,
        "D District": 201
    },
    "Los City": {
        "X District": 207,
        "Y District": 208
    }
}