电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python復合條件下的字典排序

瀏覽:3日期:2022-07-01 18:01:49

知乎上有人說,Python3.6以后字典有序且更高效了。群里有同學推薦了這篇文章給我看,并咨詢字典排序的問題。

大致瀏覽了一下,我當即表示不能認同這個說法。這篇文章的作者,應該是一位資深的專業人士,對于Python解釋器如何實現字典存儲和檢索有著深刻地理解。但他犯了一明顯的常識性錯誤:在邏輯上,字典是數據的無序集合,僅依賴于鍵檢索。我們說字典是無序,不是指字典在物理實體上實現的時候真的無序,而是指它的順序對用戶而言沒有明確的界定,不能作為數據的特性使用。知乎上這篇文章講的字典有序,是指字典在物理實體上實現時的有序,而非邏輯上的有序。

既然字典是無序的,為什么還有那么多討論字典排序的話題呢?其實,在Py2時代,就存在有序字典(orderdict),但有序字典和我們討論的字典,并非一碼事兒。所謂的字典排序,實質上是根據排序規則將字典的鍵排序,得到的排序結果是一個列表。

我們用一個例子來演示一下字典排序:roster是一個保存學生信息的字典,請按照女生優先、低年級在前、總成績從高到底排序;如果總成績相同,則順序比較語文、數學、英語成績,高者在前。

roster = { ’李妍可’: {’性別’:’女’, ’年級’:3, ’語文’:98, ’數學’:95, ’英語’:100}, ’鄔勝杰’: {’性別’:’男’, ’年級’:5, ’語文’:95, ’數學’:100, ’英語’:97}, ’白星瑤’: {’性別’:’女’, ’年級’:2, ’語文’:100, ’數學’:99, ’英語’:100}, ’吳詩涵’: {’性別’:’男’, ’年級’:3, ’語文’:98, ’數學’:92, ’英語’:90}, ’莊嘉順’: {’性別’:’男’, ’年級’:5, ’語文’:97, ’數學’:95, ’英語’:100}}

Python最常用的排序函數是sorted(),我們就用sorted()來實現這個排序。如果一次寫出復合排序條件,有一定難度。我們化繁為簡,一步步實現。

1. 比較總成績

>>> sorted(roster, key=lambda name:roster[name][’語文’]+roster[name][’數學’]+roster[name][’英語’])[’吳詩涵’, ’鄔勝杰’, ’莊嘉順’, ’李妍可’, ’白星瑤’]

看起來沒有問題,但sorted默認是升序,總成績從高到底排序的話,要使用reverse=True這個參數。

>>> sorted(roster, key=lambda name:roster[name][’語文’]+roster[name][’數學’]+roster[name][’英語’], reverse=True)[’白星瑤’, ’李妍可’, ’鄔勝杰’, ’莊嘉順’, ’吳詩涵’]2. 再來嘗試女生優先、低年級在前的兩個條件排序

只要在lambda函數中,把排序項并列寫出來,sorted()就會自動實現符合條件排序。這里性別排序的條件是’性別’==‘男’,對女生而言,結果是False(0),小于男生的True(1),自然就排在了前面。

>>> sorted(roster, key=lambda name:(roster[name][’性別’]==’男’,roster[name][’年級’]))[’白星瑤’, ’李妍可’, ’吳詩涵’, ’鄔勝杰’, ’莊嘉順’]3. 最終實現

嘗試了單個條件和兩個條件的排序之后,實現本題目的最終要求就很容易了。不過,成績降序排列的話,不能直接使用reverse=True,因為會影響性別和年級的排序。我們可以稍微變通一下,達到最終的目的。

>>> sorted(roster, key=lambda name:( roster[name][’性別’]==’男’, roster[name][’年級’], 300-roster[name][’語文’]-roster[name][’數學’]-roster[name][’英語’], 100-roster[name][’語文’], 100-roster[name][’數學’], 100-roster[name][’英語’] ))[’白星瑤’, ’李妍可’, ’吳詩涵’, ’莊嘉順’, ’鄔勝杰’]

到此這篇關于python復合條件下的字典排序的文章就介紹到這了,更多相關python 字典排序內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 土壤肥料养分速测仪_测土配方施肥仪_土壤养分检测仪-杭州鸣辉科技有限公司 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 微型实验室真空泵-无油干式真空泵-微型涡旋耐腐蚀压缩机-思科涡旋科技(杭州)有限公司 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 甲级防雷检测仪-乙级防雷检测仪厂家-上海胜绪电气有限公司 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 青岛成人高考_山东成考报名网| 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 上海质量认证办理中心| 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 上海APP开发-APP制作-APP定制开发-上海APP开发制作公司-咏熠科技 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 周口市风机厂,周鼓风机,河南省周口市风机厂 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 上海律师事务所_上海刑事律师免费咨询平台-煊宏律师事务所 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 高压分散机(高压细胞破碎仪)百科-北京天恩瀚拓| 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 液晶拼接屏厂家_拼接屏品牌_拼接屏价格_监控大屏—北京维康 | 实体店商新零售|微赢|波后|波后合作|微赢集团 | 万家财经_财经新闻_在线财经资讯网 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] |