2013-05-22 6 views
0

из вложенного списка:Создание вложенного словаря из вложенного списка

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

Я хотел бы создать вложенную словарь:

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

Можно ли это сделать с помощью словаря понимания ? Есть ли лучший тип структуры данных для хранения этих отношений?

Заранее благодарен!

ответ

3
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']})}) 
+0

+1 Я не знал, что мы можем использовать 'lambda' внутри' defaultdict'. –

+0

Awesome. Благодаря!! – user877334

Смежные вопросы