如何循环遍历嵌套字典,将它们转换为json(或任何其他类型的函数),而不管递归中最后一个对象是列表的字典长度。
我原来的词典:
dictionary = {
<obj1> : {
<obj2>: {
<obj3>: {
[<obj4>, <obj5>, <obj6>],
},
<obj7>: {
<obj8>: {
[<obj9>, <obj10>, <obj11>],
},
<obj12> : {
<obj13>: {
<obj14>: {
[<obj15>, <obj16>, <obj17>],
},
}
答案 0 :(得分:0)
通常,您需要实现一个类型开关和一组递归函数:
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))
即。所以copy_value根据它的参数类型确定要调用的复制函数。
如果这只是产品json,那么使用json模块 - 不要尝试编写自己的json序列化器!