Ссылка и печать значений из словаря (Python)

Попробуйте этот код

public partial class ssplashscreen : Form
    {
        public ssplashscreen()
        {                
            InitializeComponent();    
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            progressBar1.Increment(1);
            if (progressBar1.Value == 100)
            {
                timer1.Stop();
                this.Hide();
                Form frm = new login();
                frm.Show();
            }
        }
    }
-1
задан Hongarc 13 July 2018 в 07:15
поделиться

4 ответа

Эта проблема может быть выполнена несколькими способами, но я сделал функцию get_disctrict_and_city(), которая имеет один параметр postal_code и возвращает кортеж с district и city:

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 get_disctrict_and_city(postal_code, data=zipcode):
    for city, districts in data.items():
        for district, code in districts.items():
            if code == postal_code:
                return district, city

postal_code=int(input('Enter postal code: '))
district, city = get_disctrict_and_city(postal_code)

print('District = {} City = {}'.format(district, city))

Выход:

Enter postal code: 100
District = C District City = Trap City
0
ответ дан Andrej Kesely 17 August 2018 в 13:31
поделиться

С «zipcode [city]» вы получаете весь словарь. Я предполагаю, что пользователь должен войти в Район как String?

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

list (zipcode [city] .keys ()) предоставляет вам все ключи из города-словаря, на которые вы можете проверить район. Для Python 2.x это просто будет zipcode [city] .keys (), чтобы получить список.

0
ответ дан Bernhard 17 August 2018 в 13:31
поделиться
  • 1
    Поскольку D District существует в двух ваших словарях, я полагаю, вы действительно не хотите, чтобы пользователь вводил строку, но целое число, подобное 103 , в этом случае вам нужно будет проверить список (ZipCode [город] .values ​​()) – Bernhard 13 July 2018 в 06:53

Просто преобразуйте zipcode с пониманием dict, чтобы вместо этого индексировать zipcodes:

{z: (c, d) for c, i in zipcode.items() for d, z in i.items()}

Это выдает:

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

С помощью этого нового dict вы можете легко получить город и район от данного почтового индекса.

0
ответ дан blhsing 17 August 2018 в 13:31
поделиться

Я мало знаю о python, но вы можете это сделать. Я прав, чтобы сделать это, как если бы вы делали это в R. По googling я придумал следующее:

import pandas as pd

def get_city_dist(num,dicts):
    s = pd.DataFrame(dicts)==num
    m = list(s.columns[s.any()]) + list(s.index[s.T.any()])
    return dict(zip(["city","District"], m))


get_dis_cit(103,zipcode)
Out[122]: {'city': 'Trap City', 'District': 'D District'}

get_dis_cit(100,zipcode)
Out[123]: {'city': 'Trap City', 'District': 'C District'}

get_dis_cit(200,zipcode)
Out[124]: {'city': 'Zap City', 'District': 'R District'}

get_dis_cit(208,zipcode)
Out[125]: {'city': 'Los City', 'District': 'Y District'}
0
ответ дан Onyambu 17 August 2018 в 13:31
поделиться
  • 1
    Вместо того, чтобы иметь nums как аргумент, вы можете использовать его как пользовательский ввод внутри функции – Onyambu 13 July 2018 в 08:43
Другие вопросы по тегам:

Похожие вопросы: