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)
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分钟清零待检票游客。