python 编程 学生成绩评级需求请教

python 编程中遇到问题,请教各位如何将列表a转化为字典b?

a= [[174, 'dP', u'Good', 2], [174, 'UClean', u'Significant', 5], [175, 'dP', u'Neutral', 3], [175, 'UClean', u'Significant', 5]]
b = {174:{'dP': 2, 'UClean': 5},175:{'dP': 3, 'UClean': 5}}

完整功能如同给学生成绩分等级。
假设有张三,李四两名同学,本学期有语文数学两门学科,需要根据学生成绩,进行分级,并将两个学科中最差的等级作为最终的评级。
列表a如同 [张三语文成绩,张三数学成绩,李四语文成绩,李四数学成绩]
请问有没有什么好的实现办法。
今天研究了一天不知道改怎么处理。

表头语文数学最终成绩
张三优秀及格及格
李四良好优秀良好

没看明白你的成绩划分和上面那个字典有什么关系,单就转化字典来说,还是很简单的:

a= [[174, 'dP', u'Good', 2], [174, 'UClean', u'Significant', 5], [175, 'dP', u'Neutral', 3], [175, 'UClean', u'Significant', 5]]

b = dict()
for i in a:
    b.setdefault(i[0], dict()).update({i[1]:i[3]})
print(b)

转字典看楼上~~~
这是转结构化数据。

import pandas as pd
a = [[174, 'dP', u'Good', 2], [174, 'UClean', u'Significant', 5], [175, 'dP', u'Neutral', 3],
     [175, 'UClean', u'Significant', 5]]
# b = {174: {'dP': 2, 'UClean': 5}, 175: {'dP': 3, 'UClean': 5}}
# good<Significant ,Neutral<Significant , Neutral<
df=pd.DataFrame(columns='学号,语文,数学,最终成绩'.split(','))
for a1 in a:
    if a1[0] not in df['学号'].tolist() :
        df.loc[len(df),['学号']] = a1[0]
        if a1[1] == 'dP':
            df.loc[df[df['学号']==a1[0]].index,'语文'] = a1[3]
    else:
        df.loc[df[df['学号']==a1[0]].index,'数学'] = a1[3]
df['最终成绩'] =df[['语文','数学']].apply(lambda x:min(x),axis = 1)
print(df)

img

  • 这篇博客: Python之简单的计算及输入输出中的 假设张家界景区的游客抵达检票口的速度是恒定的。某国庆长假日清晨景区开门时检票口已积聚了一定数量的游客,且随时间流逝,不断有新的游客抵达。如果打开 8 个检票口,180 分钟刚好可以完成全部游客的检票放行;如果使用 6 个检票口,则需要300 分钟才能完成。请编程计算:如果使用 10 个检票口,需要多少时间才能将景区入口的待检票人数清零? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • y=(300*6-180*8)/(300-180)
    x=180*8-180*y
    z=x/10-y
    print(f"原有游客排队份数:{x},\n每分钟新到游客份数{y},\n10口同开需{z}分钟清零待检票游客。")

     原有游客排队份数:900.0,
    每分钟新到游客份数3.0,
    10口同开需87.0分钟清零待检票游客。