使用python3从嵌套字典中检索子键

时间:2020-01-22 21:29:29

标签: python-3.x dictionary parsing

我有这本字典,我想在其中检索'id'的值。 最好的方法是什么?

dict = {'total': 2, 'page': 0, 'pageSize': 10, 'count': 2, 'results': [{'id': 3, 'domainId': 1}]}

我尝试过:

      print (dict['id'])

E KeyError:'id'

如果我打印按键,我只会得到:

['total', 'page', 'pageSize', 'count', 'results']

5 个答案:

答案 0 :(得分:1)

首先,不要调用变量dict,因为这是字典的Python类型的名称,因此您当前正在覆盖该函数。

让我们改名为d

d = {
  'total': 2, 
  'page': 0, 
  'pageSize': 10, 
  'count': 2, 
  'results': [
    {'id': 3, 'domainId': 1}
  ]
}

在这里我们可以看到d['results']是我们要查询的ID。这是一张清单,所以我想问您是总是要第一件事还是所有事情,还是仅仅想要最后一件事。

如果是我,我将首先提取所有ID,然后获取我真正想要的ID。

我们可以通过以下方式获取所有ID作为列表:

[r['id'] for r in d['results'] if 'id' in r]

这意味着如果results是以下列表,我们将获得以下ID:

d['results'] == [
  {'id': 3, 'domainId': 1},
  {'id': 4},
  {'domainId': 2},
  {'giraffe': True}
]

ids = [r['id'] for r in d['results'] if 'id' in r]

ids == [3, 4]

这时我们可以处理所有id,也可以只获取第一个(ids[0])或最后一个(ids[-1])。


如果您确切知道它将位于results中的索引,则可以直接访问该索引。

d['results'][-1]['id']

答案 1 :(得分:0)

id_value = dict['results'][0]['id']

此外,通常不应该在Python中将字典称为dictdict是内置函数的名称,您可能会通过覆盖它来弄乱事情。

答案 2 :(得分:0)

dict['results'][0]['id']获得该值。将嵌套字典放在列表中会使事情有些混乱。

答案 3 :(得分:0)

'results'的值是一个列表,其第一项是另一本词典。您可以使用索引0访问嵌套字典。

print(dict['results'][0]['id'])

答案 4 :(得分:0)

value = dict['results'][0]['id']

您可以使用dict['results']来访问列表,在该列表中,第一个元素[0]是一个字典,您最终可以在其中获得[id]的值。