0

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

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


district=input('Enter your district: ')

for city in zipcode:
    if district in city:
        print(city,zipcode[city][district])





d_district = {k2: (k1, v2) for k1, v1 in zipcode.items() for k2, v2 in 
v1.items()}

print(d_district)

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

d_code = {v2: k2 for k1, v1 in zipcode.items() for k2, v2 in 
v1.items()}

print(d_code)

{100: 'C District',
103: 'D District',
104: 'E District',
105: 'S District',
200: 'R District',
201: 'D District',
207: 'X District',
208: 'Y 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'}
>>> 

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

4

2 回答 2

0

该程序只执行两个打印语句print(d_district)print(d_code),实际上您只是转储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])
于 2018-07-12T09:17:13.870 回答
0

谷歌搜索结果。不知道蟒蛇。可能仅适用于此示例:尝试:

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
    }
}
于 2018-07-13T09:40:50.203 回答