Python字典列表检索过程

Python字典列表检索过程,python,dictionary,arraylist,list-comprehension,Python,Dictionary,Arraylist,List Comprehension,我一直在努力解决一个问题,该问题涉及根据每个地区的起始范围和结束范围向某个地区发送邮政编码。我似乎不知道如何使用下面的字典来浏览我的邮政编码列表。最后,我需要一份清单,上面写着邮政编码6015属于a地区 mydict = {'Territory a': [60000,60999], 'Territory b': [90000,90999], 'Territory c': [70000,700999]} myzips = [60015,60016,60017,90001,90002,90003,7

我一直在努力解决一个问题,该问题涉及根据每个地区的起始范围和结束范围向某个地区发送邮政编码。我似乎不知道如何使用下面的字典来浏览我的邮政编码列表。最后,我需要一份清单,上面写着邮政编码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]
我已经研究过如何在字典中调用值,但我不认为有一种调用键的好方法,在我的例子中,键就是区域描述。我并不完全相信字典是一种可行的方法,但我想不出另外一种方法,所有的元素都会聚集在一起,在未来的函数或循环中被调用


任何帮助都将不胜感激

字典不应该这样使用。尽管如此,这里有一个解决您的问题的解决方案

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
mydict={'Territory a':[6000060999],'Territory b':[90000999],'Territory c':[7000070099]}
myzips=[600156016600179000190000290003765507655676557]
对于myzips中的zipCode:
对于地区,mydict.items()中的邮政编码为:

如果(邮政编码[0]我将更改
mydict
,因此键是zipcode,值是territory。可能没有属于两个territory的邮政编码

newdict = {}
for territory, zipcodes in mydict.items():
    for zipcode in zipcodes:
        newdict[zipcode] = territory
现在您可以获得列表中所有zipcodes的区域

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

请注意,在您发布的数据中,
myzips
中的邮政编码都不在
mydict
中,因此
newdict.get
将返回
none

我在Sri和Eric的帮助下使其工作。 我让它工作起来了。我只是为领土做了一个不同的列表(最终列表),然后循环遍历每一个

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  
h=0
而h如果(邮政编码[0]或,您可以执行
邮政编码[0]谢谢你需要考虑ZIPCONE的范围。当他把A域列为60000, 60999时,他也希望所有的值都在它们之间。反转键:在这个场景中,VAR将不起作用,因为它只会检查边界值。谢谢埃里克和SRI的帮助。这帮助了我的代码A。很多。关于“可能没有属于两个地区的邮政编码”,事实上有很多重叠。当我输入代码时,它会先进行第一次匹配,然后再进行其他匹配。我想我需要一个while循环,但不确定。