Python процесс поиска в словаре - PullRequest
0 голосов
/ 11 апреля 2020

Я работал над решением проблемы, связанной с почтовым индексом на территории, основываясь на начальном и конечном диапазонах на каждой территории. Я не могу понять, как использовать словарь ниже, чтобы просмотреть мой список почтовых индексов. В конечном счете мне нужен список, который говорит, что почтовый индекс 6015 принадлежит территории A

mydict = {'Territory a': [60000,60999], 'Territory b': [90000,90999], 'Territory c': [70000,700999]}
myzips = [60015,60016,60017,90001,90002,90003,76550,76556,76557]

У меня есть исследование, как вызывать значения в словаре, но я не вижу, что есть хороший способ вызвать ключ, который в моем случае является описанием территории. Я не совсем уверен, что словарь - это путь к go, но я не могу придумать другой способ, как все элементы остаются вместе, чтобы вызываться в будущей функции или l oop.

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 11 апреля 2020

Словари не предназначены для такого использования. Тем не менее, вот решение, которое решает вашу проблему.

mydict={'Territory a':[60000,60999],'Territory b': [90000,90999],'Territory c': [70000,70099]}
myzips =[60015,60016,60017,90001,90002,90003,76550,76556,76557]

for zipCode in myzips:
    for territory, postCodes in mydict.items():
        if (postCodes[0] <= zipCode <= postCodes[1]):
            print(str(zipCode) + " is in " + territory)
            break

Для каждого данного почтового индекса мы проверяем, находится ли он в пределах диапазона почтового индекса для всех территорий. Если это так, мы печатаем его.

0 голосов
/ 15 апреля 2020

Я заставил его работать с помощью Шри и Эри c. Я получил это на работу. Я только что составил отдельный список для территории (final_list), затем l oop через каждую.

h = 0
while h < len(final_list) :

        for zipCode in myzips:
            for territory, postCodes in dict.items():
                if (postCodes[0] <= zipCode <= postCodes[1])and postCodes[2] == final_list[h] :
                    mylist2.append(str(zipCode)+","+territory)
                #break
        h += 1  
0 голосов
/ 11 апреля 2020

Я бы изменил mydict, поэтому ключ - это почтовый индекс, а значение - территория. Предположительно нет почтовых индексов, принадлежащих двум территориям.

newdict = {}
for territory, zipcodes in mydict.items():
    for zipcode in zipcodes:
        newdict[zipcode] = territory

Теперь вы можете получить территорию для всех почтовых индексов в вашем списке

for zipcode in myzips:
    print(zipcode, newdict.get(zipcode)

Обратите внимание, что в данных, которые вы разместили ни один из почтовых индексов в myzips не указан в mydict, поэтому newdict.get вернет None.

...