Python 递归地将嵌套字典中的对象呈现为json
不管递归中最后一个对象是列表的字典的长度如何,如何在嵌套字典中进行迭代,将它们转换为json(或任何其他类型的函数) 我的原始词典:Python 递归地将嵌套字典中的对象呈现为json,python,recursion,dictionary,Python,Recursion,Dictionary,不管递归中最后一个对象是列表的字典的长度如何,如何在嵌套字典中进行迭代,将它们转换为json(或任何其他类型的函数) 我的原始词典: dictionary = { <obj1> : { <obj2>: { <obj3>: { [<obj4>, <obj5>, <obj6>], }, <obj7>
dictionary = {
<obj1> : {
<obj2>: {
<obj3>: {
[<obj4>, <obj5>, <obj6>],
},
<obj7>: {
<obj8>: {
[<obj9>, <obj10>, <obj11>],
},
<obj12> : {
<obj13>: {
<obj14>: {
[<obj15>, <obj16>, <obj17>],
},
}
字典={
: {
: {
: {
[, ],
},
: {
: {
[, ],
},
: {
: {
: {
[, ],
},
}
通常,您需要实现一个类型开关和一组递归函数:
class MyDict(dict):
def __repr__(self):
return "MyDict(%s)" % super(MyDict, self).__repr__()
class MyList(list):
def __repr__(self):
return "MyList(%s)" % super(MyList, self).__repr__()
def copy_dict(val):
res = MyDict()
for k, v in val.items():
res[k] = copy_value(v)
return res
def copy_list(val):
res = MyList()
for item in val:
res.append(copy_value(item))
return res
def copy_default(val):
return val
COPYFN = {
dict: copy_dict,
list: copy_list,
}
def copy_value(v):
copy_fn = COPYFN.get(type(v), copy_default)
#print("COPYVAL:", copy_fn, type(v), v)
return copy_fn(v)
d = dict(hello=dict(beautiful=['world']))
print(copy_value(d))
i、 所以copy_值根据参数的类型确定要调用哪个copy函数
如果这只是为了生成json,那么使用json模块——不要尝试编写自己的json序列化程序!导入json;json.dumps(dictionary)
?