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只获取第一级的键的主要内容,如果未能解决你的问题,请参考以下文章