繁体   English   中英

Python字典列表检索过程

[英]Python dictionary list retrieval process

我一直在努力解决一个涉及 zip 代码到基于每个区域内的开始范围和结束范围的区域的问题。 我似乎无法弄清楚如何使用下面的字典来浏览我的 zip 代码列表。 最终我需要一个清单,上面写着 zip 代码 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 的方式,但我想不出另一种方式,所有元素都可以在未来的 function 或循环中被调用。

任何帮助将不胜感激。

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

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

对于给定的每个 zip,我们检查它是否在所有地区的邮政编码范围内。 如果是,我们打印它。

我会改变mydict所以关键是邮政编码,价值是领土。 大概没有属于两个地区的 zip 代码。

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 myzips ,因此newdict.get将返回None

我在 Sri 和 Eric 的帮助下完成了这项工作。 我让它工作。 我刚刚为 Territory(final_list) 制作了一个不同的列表,然后遍历每个列表。

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  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM