如何在python中为没有基于整数的索引构建2D查找

时间:2014-12-07 18:23:09

标签: python collections

还在学习python的基础知识并一直在寻找类似的例子,但找不到解决方案,所以这是我的问题:

我从IoT服务获取以下数据作为大型JSON对象的一部分:

for structure in IoT.response['where']:
    for where in IoT.response['where'][structure]['wheres']:
        print structure + ' '+ where['where_id'] + ' ' + where['name']

输出:

structure                            location_id                          name
==================================================================================    
df6db2b0-36ac-11e3-b974-1231390b5549 00000000-0000-0000-0000-000100000001 Basement
df6db2b0-36ac-11e3-b974-1231390b5549 58eafc6e-8eab-4452-b48a-3a6f7f1004f7 Bathroom
df6db2b0-36ac-11e3-b974-1231390b5549 00000000-0000-0000-0000-00010000000d Bedroom
df6db2b0-36ac-11e3-b974-1231390b5549 00000000-0000-0000-0000-000100000003 Den
df6db2b0-36ac-11e3-b974-1231390b5549 00000000-0000-0000-0000-000100000010 Dining Room
df6db2b0-36ac-11e3-b974-1231390b5549 00000000-0000-0000-0000-000100000006 Downstairs
df6db2b0-36ac-11e3-b974-1231390b5549 00000000-0000-0000-0000-000100000000 Entryway
df6db2b0-36ac-11e3-b974-1231390b5549 00000000-0000-0000-0000-00010000000b Family Room

问题:

  

如何创建一个简单的查找,我可以根据无数字structure_id和location_id查找位置名称以检索名称?

我尝试过散列id,这样我就可以处理数字索引:

location[hash(structure)][hash(where['where_id'])] = where['name']

但是我得到了一个列表索引错误:

list index out of range

我确信我在这里遗漏了一些简单或明显的东西。

1 个答案:

答案 0 :(得分:2)

Mybe location是一个列表而不是字典。当您询问location[structure]项时,使用默认dict来获取字典。 Moreovere你不需要使用hash let dictionary来完成它的工作。

import collections
location = collections.defaultdict(dict)
location[structure][where['where_id']] = where['name']

我没有测试它但应该工作