sorted语法
sorted(iterable, key=None, reverse=False)
参数说明:
- iterable -- 可迭代对象。
- key --主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回:
- 一个新list对象
sorted对字典dict排序
①按键key排序
from operator import itemgetter dict = {3: 'B', 1: 'A', 2: 'C'} # 按key升序 .items()取得3个(key,value) # lambda x: x[0]取(key,value)的key 即(3,1,2) d1 = sorted(dict.items(), key=lambda x: x[0], reverse=False) # <class 'list'> # 按key降序 itemgetter类似lambda d2 = sorted(dict.items(), key=itemgetter(0), reverse=True) # <class 'list'> # 输出 print(d1, type(d1)) # [(1, 'A'), (2, 'C'), (3, 'B')] <class 'list'> print(d2, type(d2)) # [(3, 'B'), (2, 'C'), (1, 'A')] <class 'list'>
[(1, ‘A'), (2, ‘C'), (3, ‘B')] <class ‘list'>
[(3, ‘B'), (2, ‘C'), (1, ‘A')] <class ‘list'>
②按值value排序
from operator import itemgetter dict = {3: 'B', 1: 'A', 2: 'C'} # 按value升序 .items()取得3个(key,value) # lambda x: x[1]取(key,value)的value 即('B','A','C') d3 = sorted(dict.items(), key=lambda x: x[1], reverse=False) # <class 'list'> # 按value降序 itemgetter类似lambda d4 = sorted(dict.items(), key=itemgetter(1), reverse=True) # <class 'list'> print(d3, type(d3)) # [(1, 'A'), (3, 'B'), (2, 'C')] <class 'list'> print(d4, type(d4)) # [(2, 'C'), (3, 'B'), (1, 'A')] <class 'list'>
[(1, ‘A'), (3, ‘B'), (2, ‘C')] <class ‘list'>
[(2, ‘C'), (3, ‘B'), (1, ‘A')] <class ‘list'>
sorted排序list
①按一种规则排序list
from operator import itemgetter data = [('c', 3, 'Apple'), ('d', 1, 'Cat'), ('a', 2, 'Banana')] # 根据字母升序 print(sorted(data, key=lambda x: x[0], reverse=False)) # <class 'list'> # 根据数字升序 print(sorted(data, key=lambda x: x[1], reverse=False)) # <class 'list'> # 根据单词升序 print(sorted(data, key=lambda x: x[2], reverse=False)) # <class 'list'>
[('a', 2, 'Banana'), ('c', 3, 'Apple'), ('d', 1, 'Cat')]
[('d', 1, 'Cat'), ('a', 2, 'Banana'), ('c', 3, 'Apple')]
[('c', 3, 'Apple'), ('a', 2, 'Banana'), ('d', 1, 'Cat')]
②按多种规则排序list
# 先按照成绩降序排序,相同成绩的按照名字升序排序: d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}] l = sorted(d1, key=lambda x:(-x['score'], x['name'])) print(l)
[{'name': 'alice', 'score': 38}, {'name': 'christ', 'score': 28}, {'name': 'darl', 'score': 28}, {'name': 'bob', 'score': 18}]
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]] }
二维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))
[[‘Mandy', 82.5, ‘A'], [‘Bob', 95.0, ‘A'], [‘Alan', 86.0, ‘C'], [‘Rob', 86, ‘E']]
[[‘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': ‘alice', ‘score': 38}, {‘name': ‘christ', ‘score': 28}, {‘name': ‘darl', ‘score': 28}, {‘name': ‘bob', ‘score': 18}]
[{‘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]) )))
[(‘Zhang', [‘E', 2]), (‘Du', [‘C', 2]), (‘Wang', [‘P', 3]), (‘Li', [‘M', 7]), (‘Zhe', [‘H', 7]), (‘Ma', [‘C', 9])]
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)
{‘Apple': [[‘11', 33], [‘44', 88], [‘22', 88]], ‘Banana': [[‘44', 22], [‘55', 43], [‘11', 68]], ‘Orange': [[‘33', 22], [‘22', 22], [‘52', 41], [‘44', 42]]}
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】