先看看我们排序的有哪些类型的数据结构 先学会 [[‘Mandy’, 82.5, ‘A’], [‘Bob’, 95.0, ‘A’], [‘Alan’, 86.0, ‘C’], [‘Rob’, 86, ‘E’]] [{‘name’: ‘alice’, ‘score’: 38}, {‘name’: ‘christ’, ‘score’: 28}, {‘name’: ‘darl’, ‘score’: 28}, {‘name’: ‘bob’, ‘score’: 18}] [(‘Zhang’, [‘E’, 2]), (‘Du’, [‘C’, 2]), (‘Wang’, [‘P’, 3]), (‘Li’, [‘M’, 7]), (‘Zhe’, [‘H’, 7]), (‘Ma’, [‘C’, 9])] {‘Apple’: [[‘11’, 33], [‘44’, 88], [‘22’, 88]], ‘Banana’: [[‘44’, 22], [‘55’, 43], [‘11’, 68]], ‘Orange’: [[‘33’, 22], [‘22’, 22], [‘52’, 41], [‘44’, 42]]}【Python】sorted排序list和dict的混合
#### 二维list排序 l1 = [['Bob', 95.00, 'A'], ['Alan', 86.0, 'C'], ['Mandy', 82.5, 'A'], ['Rob', 86, 'E']] #### list中混合字典 l2 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}] #### 字典中混合list d1 = {'Li': ['M', 7], 'Zhang': ['E', 2], 'Wang': ['P', 3], 'Du': ['C', 2], 'Ma': ['C', 9], 'Zhe': ['H', 7]} #### 对字典中的多维list进行排序 d2 = { 'Apple': [['44', 88], ['11', 33], ['22', 88]], 'Banana': [['55', 43], ['11', 68], ['44', 22]], 'Orange':[['22', 22], ['55', 41], ['44', 42], ['33', 22]] }
1. 二维list排序
from operator import itemgetter l1 = [['Bob', 95.00, 'A'], ['Alan', 86.0, 'C'], ['Mandy', 82.5, 'A'], ['Rob', 86, 'E']] # 按先按成绩号升序,再按成绩数值升序 print(sorted(l1, key=itemgetter(2, 1), reverse=False)) # 按先按成绩号升序,再按成绩数值降序序 print(sorted(l1, key=lambda x:(x[2], -x[1]), reverse=False))
[[‘Bob’, 95.0, ‘A’], [‘Mandy’, 82.5, ‘A’], [‘Alan’, 86.0, ‘C’], [‘Rob’, 86, ‘E’]]2. list中混合字典
from operator import itemgetter # 先按照成绩降序排序,相同成绩的按照名字升序排序: l2 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}] print(sorted(l2, key=lambda x:(-x['score'], x['name']))) print(sorted(l2, key=itemgetter('score', 'name')))
[{‘name’: ‘bob’, ‘score’: 18}, {‘name’: ‘christ’, ‘score’: 28}, {‘name’: ‘darl’, ‘score’: 28}, {‘name’: ‘alice’, ‘score’: 38}]3. 字典中混合list
d1 = {'Li': ['M', 7], 'Zhang': ['E', 2], 'Wang': ['P', 3], 'Du': ['C', 2], 'Ma': ['C', 9], 'Zhe': ['H', 7]} # sort返回的是list,如果需要转为dict,再sorted前面套一个dict()就可以了 print(sorted(d1.items(), key=lambda x:(x[1][1], -ord(x[1][0]) ))) # 对字符比较需要ord。如果是'123'字符串数字可以使用int。 # print(sorted(d1.items(), key=lambda x:(x[1][1], -ord(x[1][0]) )))
4. 对字典中的多维list进行排序
d2 = { 'Apple': [['44', 88], ['11', 33], ['22', 88]], 'Banana': [['55', 43], ['11', 68], ['44', 22]], 'Orange':[['22', 22], ['55', 41], ['44', 42], ['33', 22]] } for key, value in d2.items(): d2[key] = sorted(value, key=lambda x:(x[1], -int(x[0]))) # 按list第二列升序,相同则按第一列降序,参考二维list排序 print(d2)
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算