将列表转换为Dict

时间:2015-03-27 20:27:39

标签: python python-2.7 python-3.x dictionary

当我有一个格式为

的列表时
list1 = [[James,24],[Ryan,21],[Tim,32]...etc] 

我可以用

dic1 =dict(list1)

但现在可以说我有多个值,例如

list1 = [[James,24,Canada,Blue,Tall],[Ryan,21,U.S.,Green,Short
[Tim,32,Mexico,Yellow,Average]...etc]

我不知道如何创建一个dict,以便它将第一个名称显示为键,将以下值显示为值。

提前致谢

3 个答案:

答案 0 :(得分:16)

您可以使用dict comprehension并切片:

>>> list1 = [['James','24','Canada','Blue','Tall'],['Ryan','21','U.S.','Green','Short']]
>>> {i[0]:i[1:] for i in list1}
{'James': ['24', 'Canada', 'Blue', 'Tall'], 'Ryan': ['21', 'U.S.', 'Green', 'Short']}

在python 3中,您可以使用更优雅的方式进行解包操作:

>>> {i:j for i,*j in list1}
{'James': ['24', 'Canada', 'Blue', 'Tall'], 'Ryan': ['21', 'U.S.', 'Green', 'Short']}

答案 1 :(得分:2)

遍历列表中的条目并将其添加到字典中:

for entry in list:
    dict[entry[0]]=entry[1:]

答案 2 :(得分:1)

使用星型拆包。 如果键不存在,插入键,空值。 Extend 不需要任何元素。它适用于空列表。

s =  [['James','24','Canada','Blue','Tall'],['Ryan','21','U.S.','Green','Short']]

output = {}

for k, *v in s:
    if v:
        output.setdefault(k, []).extend(v)
    else:
        output[k] = None
       
print(output ) 
{'James': ['24', 'Canada', 'Blue', 'Tall'], 'Ryan': ['21', 'U.S.', 'Green', 'Short']}

[Program finished]