如何创建以列表为值的字典?

我怎样才能得到这个输出:

{'Test 1': ['100', '88', '45', '59', '73', '89'], 'Test 2': ['90', '99', '56', '61', '79', '97'], 'Test 3': ['80', '111', '67', '67', '83', '101']}

有了这个数据

grades =  [
  ['Students', 'Test 1', 'Test 2', 'Test 3'],
  ['Tomas', '100', '90', '80'],
  ['Marcos', '88', '99', '111'],
  ['Flavia', '45', '56', '67'],
  ['Ramon', '59', '61', '67'],
  ['Ursula', '73', '79', '83'],
  ['Federico', '89', '97', '101']
] 

回答

的第一个元素(行)grades包含您要使用的所有键。每隔一行包含每一列中键的值。您可以zip像这样使用解包:zip(grades[0], *grades[1:])获取一个迭代器,该迭代器给出一个包含键作为第一个元素的元组,以及其余元素中每隔一行的相应列。然后,您可以使用解包k, *v in zip(...)来获取 中的键k,以及 中列中的值的列表v

然后,您可以使用字典理解从zip操作结果中创建字典。k:v是字典的键和值,k in grades[0]因此每次迭代都会给 k 一个元素 from grades[0],然后*v是一个完整的垂直列。

{k: v for k, *v in zip(grades[0], *grades[1:])}

# Result:
{'Students': ['Tomas', 'Marcos', 'Flavia', 'Ramon', 'Ursula', 'Federico'],
 'Test 1': ['100', '88', '45', '59', '73', '89'],
 'Test 2': ['90', '99', '56', '61', '79', '97'],
 'Test 3': ['80', '111', '67', '67', '83', '101']}


以上是如何创建以列表为值的字典?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>