#!/usr/bin/env python3.8
# _*_ coding: utf-8 _*_
# Description:
# Author: gaozengzeng <15383479200@168.com>
# Date: 2022/5/21
res = {
"json": [
"rigid",
"better for data interchange"
],
"yaml": [
"slim and flexible",
"better for configuration"
],
"object": {
"key": "value",
"shen": {
"null_value": None,
"deep_1": [],
"deep_2": {
"boolean": True,
"deep_3": {
"null_value": None,
"null": "123"
}
},
},
"array": [
{
"null_value": None
},
{
"boolean": True
},
{
"integer": 1
}
]
},
"paragraph": "Blank lines denote\nparagraph breaks\n",
"content": "Or we\ncan auto\nconvert line breaks\nto save space"
}
def func_menu(key="", res=None, ll=None):
for k, v in res.items():
k_format = "^".join([key, k]) if key else k
if not isinstance(v, dict):
if isinstance(v, list):
ll.append({k_format: "list"})
elif isinstance(v, str):
ll.append({k_format: "string"})
elif isinstance(v, bool):
ll.append({k_format: "bool"})
elif isinstance(v, float):
ll.append({k_format: "float"})
elif isinstance(v, type(None)):
ll.append({k_format: "null"})
else:
ll.append({k_format: "dict"})
func_menu(k_format, v, ll)
return ll
def func_children(key="", res=None, ll=None):
for k, v in res.items():
k_format = "^".join([key, k]) if key else k
if not isinstance(v, dict):
if isinstance(v, list):
ll.append({"type": "list", "label": k_format})
elif isinstance(v, str):
ll.append({"type": "string", "label": k_format})
elif isinstance(v, bool):
ll.append({"type": "bool", "label": k_format})
elif isinstance(v, float):
ll.append({"type": "float", "label": k_format})
elif isinstance(v, type(None)):
ll.append({"type": "null", "label": k_format})
else:
ll.append({"type": "dict", "label": k_format, "chlidren": func_children(k_format, v, [])})
return ll
if __name__ == '__main__':
print(func_children(res=res, ll=[]))
print(func_menu(res=res, ll=[]))
网友评论