如何在忽略外部属性键的同时访问内部json属性值?

时间:2018-01-26 18:01:14

标签: python json pandas

代码如下:

import json

j = json.loads(" {\"id123\":{\"test\" : 1} } ")

j

呈现:

{'id123': {'test': 1}}

我正在尝试访问属性测试,同时忽略外部属性id。

这可以通过以下方式实现:

j['id123']['test'] 

返回1

但由于我事先并不知道密钥的值(在这种情况下是id123)是否有一种通用方法来访问属性test的值,同时省略属性键{{1} }?

3 个答案:

答案 0 :(得分:0)

您可以使用 .keys()方法查找JSON的密钥

示例

import json

j = json.loads(" {\"id123\":{\"test\" : 1} } ")

print j.keys()
print j.keys()[0]
print j[j.keys()[0]]['test']

<强>结果

[u'id123']
id123
1

答案 1 :(得分:0)

您可以尝试避免使用外键并获取内部字典中的所有值

import json

j = json.loads(" {\"id123\":{\"test\" : 1} } ")
for i in j.values():
    for x in i:
        print (i[x])  #your expected output

答案 2 :(得分:0)

如果我正确地假设您的用例,您想要查看密钥test的值?鉴于您当前的结构 - 我认为使用items()可能是一个解决方案。

for k,v in j.items():
    if 'test' in v.keys():
        print(v.values())

#output is a 'dict_values' type. If you need in another format, that can be done too
dict_values([1])