Python Выбор и печать значений из словаря выборочно

1

Я написал следующий код для получения результатов из разных районов, расположенных в данном городе, и их соответствующих почтовых индексов:

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

Как мне изменить свой код, чтобы включить возможность получения ввода от пользователя (District Name) и вывести город, в котором он находится, и его почтовый индекс?

Также как я мог бы ввести почтовый индекс и получить соответствующие округа?

Заранее спасибо, новичок в питоне.

  • 0
    Я бы посоветовал sqlite3 модуль sqlite3 , базу данных в памяти и сохранить там свои данные. Таким образом, вы можете делать запросы так, как вы хотите, относительно легко.
Теги:
python-3.x
dictionary
python-2.7

3 ответа

1

Чтобы получить вход, вы можете использовать:

district=input('Enter your district: ')

Чтобы получить город, в котором он находится, и его почтовый индекс: вам нужно только перебирать словарь:

for city in zipcode:
    if district in city:
        print(city,zipcode[city][district])
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])
0

Вы можете создать несколько дополнительных словарей с помощью понимания словаря. Это одноразовая стоимость, но после этого требуется только поиск сложности (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),
  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:  District',
 200: 'R District',
 201: 'D District',
 207: 'X District',
 208: 'Y District'}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню