【发布时间】:2016-02-03 00:29:34
【问题描述】:
我正在尝试编写一个脚本,该脚本将以点表示法打印 JSON 文件的唯一键,以便快速分析结构。
例如,假设我有以下格式的“myfile.json”:
{
"a": "one",
"b": "two",
"c": {
"d": "four",
"e": "five",
"f": [
{
"x": "six",
"y": "seven"
},
{
"x": "eight",
"y": "nine"
}
]
}
运行以下将产生一组唯一的键,但它缺少沿袭。
import json
json_data = open("myfile.json")
jdata = json.load(json_data)
def get_keys(dl, keys_list):
if isinstance(dl, dict):
keys_list += dl.keys()
map(lambda x: get_keys(x, keys_list), dl.values())
elif isinstance(dl, list):
map(lambda x: get_keys(x, keys_list), dl)
keys = []
get_keys(jdata, keys)
all_keys = list(set(keys))
print '\n'.join([str(x) for x in sorted(all_keys)])
以下输出并不表示 'x'、'y' 嵌套在 'f' 数组中。
a
b
c
d
e
f
x
y
我不知道如何循环遍历嵌套结构以附加父键。
理想的输出是:
a
b
c.d
c.e
c.f.x
c.f.y
【问题讨论】:
-
你已经很好地遍历了
get_keys中的dict,为什么不在函数内部打印?
标签: python json python-2.7