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

时间:2018-07-09 09:01:25

标签: 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": 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的初学者。

3 个答案:

答案 0 :(得分:1)

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

district=input('Enter your district: ')

要获取其所在的城市及其邮政编码: 您只需要遍历字典:

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

答案 1 :(得分:0)

您可以通过字典理解来创建几个额外的字典。这具有一次性成本,但此后仅需要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'}

答案 2 :(得分:0)

如果您使用的是python3,则可以输入以下内容:

district=input('Enter your district: ')

,如果您使用的是python2,则可以输入以下内容:

district=raw_input('Enter your district: ')

要获取其所在的城市及其邮政编码:您只需要迭代并在字典上应用条件即可:

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