2016-12-29 4 views
0

CSVからデータをインポートし、それをネストされたdictsに配置します。 私の現在のキーチェックは次のようになります。ネストされたディクテーションを作成するループ

data = {} 
[...] 
if day not in data: 
    data[day] = {} 
if hour not in data[day]: 
    data[day][hour] = {} 
if user in data[day][hour]: 
    worked_time += (
     data[day][hour][user]['worked_time'] 
    ) 
data[day][hour][user] = { 
    'name': users[user]['name'], 
    'worked_time': worked_time 
} 

彼らはそれぞれdata[day][hour]
のために複数のユーザーすることができ、各keyは、いくつかのifsを使用するよりも存在するかどうかをチェックするためのより良い方法があるかどう思っていました。

+0

「名前」とは思わない:[ユーザー] [ユーザー] ['名前'] 'は有効なPython構文です。しかし、 'collections.defaultdict'や' dict.setdefault'は、 'xyyyyyyyy'ステートメントに対するこれらの' 'xxx''の良い選択肢です。 – MSeifert

+0

これはあなたの質問に答える必要があります:https://stackoverflow.com/questions/19189274/defaultdict-of-defaultdict-nested#19189356 –

+0

あなたは正しいです、それは私のスペルミスです、 'users [user] ['name] '。リンクされた答えをチェックします、ありがとうございます。 – Pythonist

答えて

-2

collections.defaultdictがいいです。辞書に指定したキーの値がない場合は、新しいキーが作成されます。

from collections import defaultdict 
data = defaultdict(lambda: defaultdict(lambda: defaultdict(dict))) 
data['day']['hour']['user']['worked_time'] = 2 
+0

ありがとう、それは動作し、あなたの編集された答えは最初のものよりも良い方法です。 – Pythonist

関連する問題