使用dicts或制作课程?哪个更快?

时间:2013-09-13 16:22:04

标签: python dictionary

我得到一个多级dict对象,我必须处理它。从多层次来看,我的意思是顶级词典有一些键,其中dicts是值。

e.g。

{'l1key1' : 'value1'
 'l1key2' : {
             'l2key1': 'something'
             'l2key2': {
                        'l3key1': 'something' 
                        'l3key2': 'something else'
                       }
            }
 'l1key3' : 'some other value'
}

实际的字典是巨大的。它有10多个键和4个级别。有时可能会丢失一些可选键。

我创建了一些类来保持代码的组织。 e.g

Class Level3():
    def __init__(self, l3dict):
        if not l3dict:
            self.exists = False
        else:
            self.exists = True
            self.l3key1 = l3dict.get('l3key1') 
            self.l3key2 = l3dict.get('l3key2')

Class Level2():
    def __init__(self, l2dict):
        if not l2dict:
            self.exists = False
        else:
            self.exists = True
            self.l2key1 = l2dict.get('l2key1') 
            self.l2key2 = Level3(l3dict.get('l2key2'))

Class Level1():
    def __init__(self, mydict):
            self.l1key1 = mydict.get('l1key1') 
            self.l1key2 = Level2(mydict.get('l1key2'))
            self.l1key3 = mydict.get('l1key3')


#usage
mydict = json.loads(thejson)     #the json I am getting as input
myobject = Level1(mydict)

我的问题是我应该直接在我的脚本中使用dict而不是制作类吗?

执行时间很短很重要。从字典中初始化类会使它变慢吗?

编辑::我计时了。该类的初始化平均需要80微秒,应用程序必须在250毫秒内完成所有处理。我现在必须看到处理所花费的时间来确定我是否可以负担80微秒。

谢谢你的答案。我也将使用Cython处理数据。

1 个答案:

答案 0 :(得分:1)

只是为了回答这个问题,只使用你已经设置的dicts会更快。正如我在评论中所说的那样,在CPython中创建对象,甚至是微不足道的对象都是非常昂贵的。