Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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-从numpy表创建字典以显示列表_Python_Numpy_Dictionary - Fatal编程技术网

Python-从numpy表创建字典以显示列表

Python-从numpy表创建字典以显示列表,python,numpy,dictionary,Python,Numpy,Dictionary,给定以下numpy表 GR = [ ['Student', 'Exam 1', 'Exam 2', 'Exam 3'], ['PersonA', '100', '90', '80'], ['PersonB', '88', '99', '111'], ['PersonC', '45', '56', '67'], ['PersonD', '59', '61', '67'], ['PersonE', '73', '79', '83'], ['Pe

给定以下numpy表

GR = [
    ['Student', 'Exam 1', 'Exam 2', 'Exam 3'],
    ['PersonA', '100', '90', '80'],
    ['PersonB', '88', '99', '111'],
    ['PersonC', '45', '56', '67'],
    ['PersonD', '59', '61', '67'],
    ['PersonE', '73', '79', '83'],
    ['PersonF', '89', '97', '101']
     ]
我需要创建一个名为GL的字典,将学生的名字映射到他们考试成绩的列表。等级应从str转换为int

Desired Output: {'PersonA':[100, 90, 80], 'PersonB':[88, 99, 111], ect....}

我在理解上有点困难,但我想这就是你想要的:

GL = [
    {x[0]: [int(j) for j in x[1:]]} for x in GR[1:]
]
输出:

[{'PersonA': [100, 90, 80]},
 {'PersonB': [88, 99, 111]},
 {'PersonC': [45, 56, 67]},
 {'PersonD': [59, 61, 67]},
 {'PersonE': [73, 79, 83]},
 {'PersonF': [89, 97, 101]}]

Python3的另一种解决方案是使用
map
将等级从
str
s转换为
int
s,并使用部分解包将每个列表拆分为
person
及其
等级

In [111]: {person: list(map(int, grades)) for person, *grades in GR[1:]}
Out[111]:
{'PersonA': [100, 90, 80],
 'PersonB': [88, 99, 111],
 'PersonC': [45, 56, 67],
 'PersonD': [59, 61, 67],
 'PersonE': [73, 79, 83],
 'PersonF': [89, 97, 101]}
Python2等价物

{g[0]: map(int, g[1:]) for g in GR[1:]}
备选案文1: 备选案文2: 输出:
您的
GR
是一个numpy数组(使用
a[2,0]
索引确认了这一点):

以及下列名单:

In [187]: {row[0]: row[1:].astype(int).tolist() for row in GR[1:]}
Out[187]: 
{'PersonA': [100, 90, 80],
 'PersonB': [88, 99, 111],
 'PersonC': [45, 56, 67],
 'PersonD': [59, 61, 67],
 'PersonE': [73, 79, 83],
 'PersonF': [89, 97, 101]}
我的名单转换提名如下:

In [188]: {name: [int(i) for i in grades] for name, *grades in GR[1:]}
Out[188]: 
{'PersonA': [100, 90, 80],
 'PersonB': [88, 99, 111],
 'PersonC': [45, 56, 67],
 'PersonD': [59, 61, 67],
 'PersonE': [73, 79, 83],
 'PersonF': [89, 97, 101]}

我的道歉@Charles Landau,我的python技能在提出这个问题后有了很大的提高

GL = dict() 
     for i in GR[1:]:
          GL[i[0]] = [int(i[1]),int(i[2]),int(i[3])]
     print(GL)

除此之外,您缺少一个与
GR=[
匹配的结束括号。请添加所需的输出。
像这样
加上“``”,称为“backtick”,在大多数西方板上它是shift+tilde。这是我如何返回所请求的内容的,我花了一点时间进行调试,但应该可以工作:
GL=dict(),用于GR[1:]:GL[item[0]=[int(item[1])、int(item[2])、int(item[3])]print(GL)
@Mac如果您回答了自己的问题(或者在这里找到了答案),您应该将其标记为已回答。(您可以发布自己问题的答案并将其标记为答案,这是允许的)
In [179]: GR
Out[179]: 
array([['Student', 'Exam 1', 'Exam 2', 'Exam 3'],
       ['PersonA', '100', '90', '80'],
       ['PersonB', '88', '99', '111'],
       ['PersonC', '45', '56', '67'],
       ['PersonD', '59', '61', '67'],
       ['PersonE', '73', '79', '83'],
       ['PersonF', '89', '97', '101']], dtype='<U7')
In [185]: {row[0]: row[1:] for row in GR[1:]}
Out[185]: 
{'PersonA': array(['100', '90', '80'], dtype='<U7'),
 'PersonB': array(['88', '99', '111'], dtype='<U7'),
 'PersonC': array(['45', '56', '67'], dtype='<U7'),
 'PersonD': array(['59', '61', '67'], dtype='<U7'),
 'PersonE': array(['73', '79', '83'], dtype='<U7'),
 'PersonF': array(['89', '97', '101'], dtype='<U7')}
In [186]: {row[0]: row[1:].astype(int) for row in GR[1:]}
Out[186]: 
{'PersonA': array([100,  90,  80]),
 'PersonB': array([ 88,  99, 111]),
 'PersonC': array([45, 56, 67]),
 'PersonD': array([59, 61, 67]),
 'PersonE': array([73, 79, 83]),
 'PersonF': array([ 89,  97, 101])}
In [187]: {row[0]: row[1:].astype(int).tolist() for row in GR[1:]}
Out[187]: 
{'PersonA': [100, 90, 80],
 'PersonB': [88, 99, 111],
 'PersonC': [45, 56, 67],
 'PersonD': [59, 61, 67],
 'PersonE': [73, 79, 83],
 'PersonF': [89, 97, 101]}
In [188]: {name: [int(i) for i in grades] for name, *grades in GR[1:]}
Out[188]: 
{'PersonA': [100, 90, 80],
 'PersonB': [88, 99, 111],
 'PersonC': [45, 56, 67],
 'PersonD': [59, 61, 67],
 'PersonE': [73, 79, 83],
 'PersonF': [89, 97, 101]}
GL = dict() 
     for i in GR[1:]:
          GL[i[0]] = [int(i[1]),int(i[2]),int(i[3])]
     print(GL)