循环创建嵌套的字典

Loop creating nested dicts

我正在从 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]
想知道是否有比使用多个 ifs 更好的方法来检查每个 key 是否存在。

collections.defaultdict 不错。如果字典没有您指定的键值,它会为您创建一个新值。

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