当我有一个格式为
的列表时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,以便它将第一个名称显示为键,将以下值显示为值。
提前致谢
答案 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]