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

2024-10-02 16:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

给出下表

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....}

Tags: 列表字典名字student学生examglgr
3条回答

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

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

Python 2等效

{g[0]: map(int, g[1:]) for g in GR[1:]}

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

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

选项1:

GR_ = {i[0]: list(map(int, i[1:])) for i in GR[1:]}

选项2:

GR_ = dict(map(lambda x: (x[0], list(map(int, x[1:]))), 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]}

相关问题 更多 >