我有一个名为nesteddict的类集合.defaultdict包含一组嵌套的词典:
import collections
class nesteddict(collections.defaultdict):
"""Nested dictionary structure.
Based on Stack Overflow question 635483
"""
def __init__(self):
collections.defaultdict.__init__(self, nesteddict)
self.locked = False
我希望能够执行一个将所有nesteddict对象转换为python本机dict对象的操作。在
一种方法是使用一种方法:
^{pr2}$这在用dict类型替换所有内部映射对象时是成功的,但是方法中的最后一条语句显然行不通。在
下面是一个例子:
In [93]: a = pyutils.nesteddict()
In [94]: a[1][1] = 'a'
In [95]: a[1][2] = 'b'
In [96]: a[2][1] = 'c'
In [97]: a[2][2] = 'd'
In [98]: print a
defaultdict(<class 'pyutils.nesteddict'>, {1: defaultdict(<class 'pyutils.nesteddict'>, {1: 'a', 2: 'b'}), 2: defaultdict(<class 'pyutils.nesteddict'>, {1: 'c', 2: 'd'})})
In [99]: a.todict()
In [100]: print a
defaultdict(<class 'pyutils.nesteddict'>, {1: {1: 'a', 2: 'b'}, 2: {1: 'c', 2: 'd'}})
在python中有没有一种方法可以做到这一点?是否有将其对象转换为其他类型的方法?如果没有,有什么好的替代方法。请注意,实际中的数据类型可能很大,因此最好不要只是复制一个副本然后返回它。在
谢谢!
Uri
我刚用嵌套的defaultdicts来面对这个问题。我的解决方案:
最好使用{}而不是dict(),因为调用 dict()的构造函数限制关键字参数的数量 到255。参见:What is a maximum number of arguments in a Python function?
dict(a)
将为您提供从defaultdict
派生的任何对象的默认dict。也就是说,假设您没有重写所需的特殊方法。在把它作为一个自由函数来做,当你在做的时候,考虑一个更实用的方法:
相关问题 更多 >
编程相关推荐