我有一个字典l
的列表,每个字典都是一个简单的1级字典,具有相同的键a
,b
,c
,{{1 }}。
现在,我想以这种形状从d
构建一个嵌套字典(l
是i
的成员):
l
现在我正在使用以下代码段:
{
i['a']: {
i['b']: {
i['c']: {
i['d']: some_value,
}
}
}
}
如果原始列表很大,这是最有效的方法吗?
答案 0 :(得分:0)
我会嵌套几个collection.defaultdict
对象,以避免进行关键测试,并使用本机代码而不是慢速的python代码。如果某个键不存在,则会创建一个默认词典,但更深的词典可能只是dict
:
tmp = collections.defaultdict(lambda : collections.defaultdict(lambda : collections.defaultdict(dict)))
for i in l:
tmp[i['a']][i['b']][i['c']][i['d']] = some_value
您可以通过为对象名称起别名来缩短定义:
dd = collections.defaultdict
tmp = dd(lambda : dd(lambda : dd(dict)))