処理する必要があるマルチレベルの dict オブジェクトを取得します。マルチレベルとは、トップレベルの辞書に、値として辞書を持ついくつかのキーがあることを意味します。
例えば
{'l1key1' : 'value1'
'l1key2' : {
'l2key1': 'something'
'l2key2': {
'l3key1': 'something'
'l3key2': 'something else'
}
}
'l1key3' : 'some other value'
}
実際の口述は巨大です。10 個以上のキーと 4 つのレベルがあります。いくつかのオプションのキーが欠落している場合があります。
コードを整理するためにクラスを作成しました。例えば
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)
私の質問は、クラスを作成する代わりに、スクリプトで直接辞書を使用する必要があるかどうかです。
実行時間が短いことが重要です。辞書からクラスを初期化すると遅くなりますか?
編集::私はそれを計った。クラスの初期化には平均 80 マイクロ秒かかります。アプリケーションは 250 ミリ秒以内にすべての処理を完了する必要があります。ここで、80 マイクロ秒を許容できるかどうかを判断するために、処理にかかった時間を確認する必要があります。
答えてくれてありがとう。また、データの処理には Cython を使用します。