一个简单的问题 - 但我还没有找到语法答案。如何选择具有特定键值组合的子词典?实际上,我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”时,如何提取车站名称和自行车数量?
答案 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']