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
}
}