Python有选择地从字典中查找和打印值

Python有选择地从字典中查找和打印值,python,python-3.x,python-2.7,dictionary,Python,Python 3.x,Python 2.7,Dictionary,我编写了以下代码,用于获取给定城市中各个地区及其各自邮政编码的输出: 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": 2

我编写了以下代码,用于获取给定城市中各个地区及其各自邮政编码的输出:

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

def list_zip(city):
    print(zipcode.get(city))

for (area,code) in zipcode["Trap City"].items():
    print(area, code)
输出:

C District 100
D District 103
E District 104
S District 105
如何修改代码以包括接收用户输入(地区名称)并输出其所在城市及其邮政编码的功能

还有,我如何输入邮政编码并获得相应的地区


提前感谢,python初学者

要获取输入,您可以使用:

district=input('Enter your district: ')
要获取其所在城市及其邮政编码,请执行以下操作: 您只需遍历字典:

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

您可以通过字典理解创建两个额外的字典。这有一个一次性的成本,但此后只需要O(1)复杂度查找

但是,请注意,此解决方案不是动态/链接的。对原始数据的更改不会自动反映在从属词典中。为此,您应该使用数据库进行调查

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

如果您使用的是python3,那么对于输入,您可以使用以下内容:

district=input('Enter your district: ')
district=raw_input('Enter your district: ')
如果您使用的是python2,那么对于输入,您可以使用:

district=input('Enter your district: ')
district=raw_input('Enter your district: ')
要获取其所在城市及其邮政编码:只需迭代并应用字典上的条件:

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

我建议查看
sqlite3
模块中的内存数据库并将数据存储在那里。这样,您就可以相对轻松地执行所需的查询。