如何从列表中创建字典

时间:2012-03-07 18:47:43

标签: python list dictionary

我的清单:

list = ['name1', 'option1.1 value1.1', 'option1.2 value1.2', 'name2', 'option2.1 value2.1', 'option2.2 value2.2', 'option2.3 value2.3']

我想要像这样创建字典:

dict = {'name1':{'option1.1':'value1.1', 'option1.2':'value1.2'}, 'name2':{'option2.1': 'value2.1', 'option2.2':'value2.2', 'option2.3':'value2.3'}

我不知道我的名单有多大(名字,选项和价值的数量)。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

有list和dict理解:

id=[b[0] for b in enumerate(lst) if 'name' in b[1]]+[None]
d={lst[id[i]]:dict(map(str.split,lst[id[i]+1:id[i+1]])) for i in range(len(id)-1)}

您的原始列表在此处命名为lst

这可能不像@sr22222的答案那么可读,但也许它更快,更有品味。

答案 1 :(得分:1)

假设name始终是一个令牌(同样,不要使用list和dict作为变量名,因为它们是内置的):

result = {}
for val in my_list:
    split_val = val.split()
    if len(split_val) == 1:
        last_name = split_val[0]
        result[last_name] = {}
    else:
        result[last_name][split_val[0]] = split_val[1]

请注意,如果列表格式错误且第一个值不是名称,则会阻塞。