简体   繁体   English

从嵌套列表创建嵌套字典

[英]Creating a nested dictionary from a nested list

From the nested list: 从嵌套列表中:

lst = [['h2o', '2938', 'v1'], ['co2', '2492', 'v1'], ['co2', '2492', 'v2'], ['o3', '780', 'v2'], ['o3', '1140', 'v2']]

I would like to create a nested dictionary: 我想创建一个嵌套字典:

t1 = {h2o:{2938:['v1']}, co2:{2492:['v1','v2']}, o3:{780:['v2'], 1140:['v2']}}

Is it possible to do this using dictionary comprehension? 是否可以使用字典理解来做到这一点? Is there a better data structure type to hold these relationships? 是否存在更好的数据结构类型来保持这些关系?

Thanks in advance! 提前致谢!

from collections import defaultdict
lst = [['h2o', '2938', 'v1'], ['co2', '2492', 'v1'], ['co2', '2492', 'v2'], ['o3', '780', 'v2'], ['o3', '1140', 'v2']]
dd = defaultdict(lambda: defaultdict(list))
for a, b, c in lst:
    dd[a][b].append(c)    

>>> dd
defaultdict(<function <lambda> at 0xb6fb087c>, {'h2o': defaultdict(<type 'list'>, {'2938': ['v1']}), 'co2': defaultdict(<type 'list'>, {'2492': ['v1', 'v2']}), 'o3': defaultdict(<type 'list'>, {'1140': ['v2'], '780': ['v2']})})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM