将列表转换为字典

5
当我有一个格式为的列表时
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]

我不知道如何创建一个字典,使其显示第一个名称作为键,后面的值作为值。
提前致谢。
3个回答

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']}

2

循环遍历列表中的条目并将它们添加到字典中:

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

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] 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接