Python:从嵌套字典访问元素

2024-10-01 22:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

一个简单的问题-但我还没有找到它的语法答案。如何选择具有特定键值组合的子字典?有效地说,我如何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”时,我该如何提取站点名称和自行车数量?在


Tags: 答案信息idjsondata字典语法详细信息
3条回答

在您的示例中,您只有一个字典数组。还有什么深度吗?如果没有,可以简单到:

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

您可以使用标准的python语法从dict中提取数据。这可能会导致一些额外的代码,但这是可以做到的。在

但是,如果您需要更奇特的东西,或者您有太多嵌套的dict,以至于迭代和循环都很麻烦,那么您可以尝试使用dpath-python这类接口来查询嵌套dict。对于SQL的语法我不确定。在

从文档-

A python library for accessing and searching dictionaries via /slashed/paths ala xpath

Basically it lets you glob over a dictionary as if it were a filesystem. It allows you to specify globs (ala the bash eglob syntax, through some advanced fnmatch.fnmatch magic) to access dictionary elements, and provides some facility for filtering those results.

既然,正如您所说,索引没有任何意义,为什么不使用您的id值作为键呢?在

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

或者,既然我们在python中:

^{pr2}$

相关问题 更多 >

    热门问题