m0_73798448 2022-11-09 22:41 采纳率: 100%
浏览 197
已结题

Python中从列表里提取字典并根据键来排序

#假设有一个存放学生学号和语数英三门功课成绩的列表studs如下:
studs= [{'sid':'103', 'Chinese': 90, 'Math':95, 'English':92},{'sid':'101', 'Chinese': 80, 'Math':85, 'English':82}, {'sid':'102', 'Chinese': 70, 'Math':75, 'English':72}]。编写程序,将列表studs的数据内容提取出来,放到一个字典scores中,在屏幕上按学号从小到大的顺序显示输出所有学生的学号及语数英三门功课的成绩
我现在已经编到了新的字典里,但是不知道怎么重新排序
studs= [{'sid':'103', 'Chinese': 90, 'Math':95, 'English':92},{'sid':'101', 'Chinese': 80, 'Math':85, 'English':82}, {'sid':'102', 'Chinese': 70, 'Math':75, 'English':72}];
dict={};
list=[];
in_key=""
a=[];
score={}
for it in studs:
for chi in it.keys():
if chi!="sid":
list.append(it[chi]);
else:
in_key=it[chi];
a.append(it[chi]);
dict[in_key]=list;
list=[]

  • 写回答

1条回答 默认 最新

  • P2441M 2022-11-10 11:40
    关注
    studs = [{'sid': '103', 'Chinese': 90, 'Math': 95, 'English': 92},
             {'sid': '101', 'Chinese': 80, 'Math': 85, 'English': 82},
             {'sid': '102', 'Chinese': 70, 'Math': 75, 'English': 72}]
    
    # 这一句是字典解析式
    # {key: value for xxx in xxx}
    scores = {stud['sid']: [stud['Chinese'], stud['Math'], stud['English']] for stud in studs}
    
    # 这一句是列表解析式
    # [item for xxx in xxx]
    sids = [int(sid) for sid in scores]
    
    # 按学号排序
    sids.sort()
    
    # 遍历每个学号
    for sid in sids:
        # 获取对应分数
        score = scores[str(sid)]
    
        # 输出
        print(f'sid:{sid}  Chinese:{score[0]}  Math:{score[1]}  English:{score[2]}')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 已采纳回答 11月10日
  • 修改了问题 11月9日
  • 创建了问题 11月9日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效