从Python中的字典列表构建深度嵌套字典的最有效方法

时间:2018-11-13 19:42:25

标签: python dictionary

我有一个字典l的列表,每个字典都是一个简单的1级字典,具有相同的键abc,{{1 }}。
现在,我想以这种形状从d构建一个嵌套字典(li的成员):

l

现在我正在使用以下代码段:

{
    i['a']: {
        i['b']: {
            i['c']: {
                i['d']: some_value,
            }
        }
    }
}

如果原始列表很大,这是最有效的方法吗?

1 个答案:

答案 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)))