Python 递归地将嵌套字典中的对象呈现为json

Python 递归地将嵌套字典中的对象呈现为json,python,recursion,dictionary,Python,Recursion,Dictionary,不管递归中最后一个对象是列表的字典的长度如何,如何在嵌套字典中进行迭代,将它们转换为json(或任何其他类型的函数) 我的原始词典: dictionary = { <obj1> : { <obj2>: { <obj3>: { [<obj4>, <obj5>, <obj6>], }, <obj7>

不管递归中最后一个对象是列表的字典的长度如何,如何在嵌套字典中进行迭代,将它们转换为json(或任何其他类型的函数)

我的原始词典:

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)