相关疑难解决方法(0)

递归地将python对象图转换为字典

我正在尝试将数据从简单的对象图转换为字典.我不需要类型信息或方法,我不需要能够再次将它转换回对象.

我发现这个问题是关于从对象的字段创建字典,但它不会递归地执行.

对于python来说相对较新,我担心我的解决方案可能是丑陋的,或者说是unpythonic,或者是以某种模糊的方式打破,或者只是简单的旧NIH.

我的第一次尝试似乎工作,直到我尝试使用列表和字典,并且检查传递的对象是否有内部字典似乎更容易,如果没有,只是将其视为一个值(而不是做所有的实例检查) ).我以前的尝试也没有递归到对象列表中:

def todict(obj):
    if hasattr(obj, "__iter__"):
        return [todict(v) for v in obj]
    elif hasattr(obj, "__dict__"):
        return dict([(key, todict(value)) 
            for key, value in obj.__dict__.iteritems() 
            if not callable(value) and not key.startswith('_')])
    else:
        return obj
Run Code Online (Sandbox Code Playgroud)

这似乎工作得更好,不需要例外,但我仍然不确定这里是否有案例,我不知道它在哪里落下.

任何建议将不胜感激.

python python-2.6

32
推荐指数
3
解决办法
1万
查看次数

标签 统计

python ×1

python-2.6 ×1