python JSON仅在第一级获得键


79

我有一个非常长且复杂的json对象,但我只想在第一级获得项目/键!

例:

{
    "1": "a", 
    "3": "b", 
    "8": {
        "12": "c", 
        "25": "d"
    }
}

我想得到1,3,8

我发现以下代码:

for key, value in data.iteritems():
    print key, value

但它会打印所有键(以及12和25


4
不,不是。它打印键,以及值本身包括子词典。如果只想打印键,请不要打印值。
Daniel Roseman


1
但是我不想使用下级键...我知道我可以省略“,value”,这只是出于调试的目的
TeNNoX 2013年

Answers:


131

做一个简单的 .keys()

>>> dct = {
...     "1": "a", 
...     "3": "b", 
...     "8": {
...         "12": "c", 
...         "25": "d"
...     }
... }
>>> 
>>> dct.keys()
['1', '8', '3']
>>> for key in dct.keys(): print key
...
1
8
3
>>>

如果需要排序列表:

keylist = dct.keys()
keylist.sort()

@karthikr如何获取输出为1、3、8.12、8.25。基本上,我希望输出的父键和子键由定界符分隔
JKC


3

正如Karthik提到的那样,dct.keys()它可以工作,但是它将返回dict_keystype中的所有键,而不是listtype中的键。因此,如果您希望所有键都在列表中,则list(dct.keys())可以使用。


1

检查python对象是否为类型实例的一种好方法是使用isinstance()Python的“内置”函数。对于Python 3.6:

dct = {
       "1": "a", 
       "3": "b", 
       "8": {
            "12": "c", 
            "25": "d"
           }
      }

for key in dct.keys():
    if isinstance(dct[key], dict)== False:
       print(key, dct[key])
#shows:
# 1 a
# 3 b
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.