python JSON只获取第一级的键

Posted

技术标签:

【中文标题】python JSON只获取第一级的键【英文标题】:python JSON only get keys in first level 【发布时间】:2013-03-25 05:16:49 【问题描述】:

我有一个很长很复杂的 json 对象,但我只想获取第一级的项目/键!

例子:


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

我想得到 1,3,8 作为结果!

我找到了这段代码:

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

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

【问题讨论】:

不,它没有。它打印键和本身包含子字典的值。如果您只想打印键,请不要打印值。 Python: how to print a dictionary's key? 的可能重复项 但我不想要子字典键...我知道我可以省略 ",value" 这只是为了调试目的 【参考方案1】:

正如 Karthik 提到的,dct.keys() 可以工作,但它会返回 dict_keys 类型而不是 list 类型的所有键。所以如果你想要一个列表中的所有键,那么list(dct.keys()) 就可以了。

【讨论】:

【参考方案2】:

检查 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

【讨论】:

【参考方案3】:
for key in data.keys():
    print key

【讨论】:

【参考方案4】:

只要做一个简单的.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。基本上我希望输出的父键和子键由一些分隔符分隔

以上是关于python JSON只获取第一级的键的主要内容,如果未能解决你的问题,请参考以下文章

python基础一 ------如何获取多个字典相同的键

Python中用于JSON提要的cURL方法[重复]

我无法从 python 中的 JSON API 响应中获取值

python获取上一级与上上一级目录的写法

Csv 到 json 通过相同的键-python

Python:通过每个国家的Json数据中的键求和的值