Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建以列表作为值的词典?_Python_Python 3.x_List_Dictionary - Fatal编程技术网

Python 如何创建以列表作为值的词典?

Python 如何创建以列表作为值的词典?,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,如何获得此输出: {'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

如何获得此输出:

{'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
是字典的键和值,对于等级[0]中的
k,因此每次迭代将从等级[0]
中给k一个元素,然后
*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']}


start=1
省略了将标签添加到字典值中的操作

它实际上还有一行……嗨,你能解释一下这里发生了什么吗?
k:v
是字典的键和值,因为
k在等级[0]
中,所以每次迭代都会从
grades[0]
中给出一个元素,然后,
*v
是一个完整的垂直列。@norok2实际上,
dico.pop(“学生”,无)
我的错。@PranavHosangadi donePandas可能是一个你想查看的库欢迎使用堆栈溢出!即使您已收到问题的答案,请阅读,并提供答案。“为我实现此功能”是本网站的主题。你必须做出诚实的尝试,然后问一个关于你的算法或技术的具体问题。
dictt ={}
for n,i in enumerate(grades[0][1:],start=1):
  dictt[i] = [x[n] for x in grades[1:]]

print(dictt)

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