2017-10-30 18 views
0

別のdictにdictを追加する必要がありますが、2番目の位置はdinamicである必要があります。python - 別のdictにdictを追加

from time import gmtime, strftime 

config = {} 

def addStr(reason): 
    datetime = strftime("%Y-%m-%d %H:%M:%S", gmtime()); 
    #config[reason] = {} # uncoment here got error 
    config[reason][datetime] = True 
    return config 

print (addStr('reason1')) # {'reason1': {'2017-10-30 20:08:26': True} } 
time.sleep(10) 
print (addStr('reason1')) # {'reason1': {'2017-10-30 20:08:26': True, '2017-10-30 20:08:36': True} } 
time.sleep(10) 
print (addStr('reason1')) # {'reason1': {'2017-10-30 20:08:26': True, '2017-10-30 20:08:36': True, '2017-10-30 20:08:46': True} } 
time.sleep(10) 
print (addStr('reason2')) # {'reason1': {'2017-10-30 20:08:26': True, '2017-10-30 20:08:36': True, '2017-10-30 20:08:46': True}, 'reason2': {'2017-10-30 20:08:56': True} } 

私はエラーを取得しています:

KeyError例外: 'REASON1'

答えて

3

私が正しくあなたの質問を理解している場合は、自動的に作成することが不足しているキーが欲しいの。そのために
は、あなたがcollections.defaultdict

import collections 
config = collections.defaultdict(dict) 
+0

@JoeIddonを使用する必要があります:ストレート割り当てが* *変更しないで置き換えます。つまり、必要に応じて内部のdictを作成する 'setdefault'メソッドでプレーン' dict'を使用できます(config.setdefault(reason、{})[datetime] = True' – ShadowRanger

+0

@ShadowRangerはい、私は同意します、私は彼らが 'function'が同じ' key'で呼び出された場合に修正された後に、それらをどのように追加したいかについて混乱しました。 –

関連する問題