【问题标题】:python JSON only get keys in first levelpython JSON只获取第一级的键
【发布时间】: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

【问题讨论】:

  • 不,它没有。它打印键和本身包含子字典的值。如果您只想打印键,请不要打印值。
  • 但我不想要子字典键...我知道我可以省略 ",value" 这只是为了调试目的

标签: python json python-2.7 iterator key


【解决方案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。基本上我希望输出的父键和子键由一些分隔符分隔
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-19
        • 1970-01-01
        • 2012-04-22
        • 1970-01-01
        • 2022-08-18
        相关资源
        最近更新 更多