2016-12-29 107 views
0

我從CSV導入數據並將其置於嵌套字典中。 我現在的重點檢查看起來是這樣的:循環創建嵌套字典

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

我不認爲'name':[users] [user] ['name'],'是有效的Python語法。但'collections.defaultdict'或'dict.setdefault'可能是替代這些'if xxx not in yyy'語句的好選擇。 – 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