Python:从嵌套字典访问元素和SQL

时间:2013-06-21 04:21:06

标签: python dictionary

一个简单的问题 - 但我还没有找到语法答案。如何选择具有特定键值组合的子词典?实际上,我select * where id='ABC'的方式是什么?

详细信息:

我在Python中创建了一个嵌套字典。我需要从子词典中提取信息,其中一个子词典的键值是blah。

我已经初始化了字典,我可以读取它的元素,但我不明白如何通过键值对调用每个子字典。例如,

#json_data is a json object

data={}
for i in range(10):
   data[i]={'id':json_data[i]['id'],
      'stationName':json_data[i]['stationName'], 
      'numBikes':json_data[i]['numBikes']}

这会启动我的嵌套字典。我可以像data[0]一样访问数据,它会正确地打印出我的子词典。但由于这些索引并不意味着什么,因为我可以添加/删除行,我需要通过键值访问它。

但是当id等于“ABC”时,如何提取车站名称和自行车数量?

3 个答案:

答案 0 :(得分:0)

您可以使用标准的python语法从dicts中提取数据。 IT可能会导致一些额外的代码,但可以完成。

但是如果你需要更多花哨的东西,或者你有很多嵌套的dicts,迭代和循环是很麻烦的,你可以尝试dpath-python,这样就可以像xpath那样查询嵌套的dicts 。对于SQL语法,我不确定。

来自文档 -

  

用于访问和搜索字典的python库   / slashed / paths ala xpath

     

基本上它可以让你在字典上覆盖它,好像它是一个字典   文件系统。它允许你指定globs(ala bash eglob语法,   通过一些先进的fnmatch.fnmatch magic)来访问字典   元素,并提供一些过滤这些结果的工具。

答案 1 :(得分:0)

因为正如你所说,索引并不意味着什么,为什么不将你的id值用作键?

data={}
for i in range(10):
    data[json_data[i]['id']] = {
        'stationName': json_data[i]['stationName']
        'numBikes': json_data[i]['numBikes']
    }

或者,因为我们在python:

data = {}
for id, value in json_data.items():
    data[id] = {
        'stationName': value['stationName']
        'numBikes': value['numBikes']
    }

答案 2 :(得分:0)

在您的示例中,您只有一个字典数组。还有更深入的内容吗?如果没有,那么就可以这么简单:

[data[i] for i in data if data[i]['id']=='ABC']