还在学习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
我确信我在这里遗漏了一些简单或明显的东西。
答案 0 :(得分:2)
Mybe location
是一个列表而不是字典。当您询问location[structure]
项时,使用默认dict来获取字典。 Moreovere你不需要使用hash let dictionary来完成它的工作。
import collections
location = collections.defaultdict(dict)
location[structure][where['where_id']] = where['name']
我没有测试它但应该工作