最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python sorted對(duì)list和dict排序

 更新時(shí)間:2020年06月09日 11:43:03   作者:Spade_  
這篇文章主要介紹了Python sorted對(duì)list和dict排序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

sorted語(yǔ)法

sorted(iterable, key=None, reverse=False)

參數(shù)說(shuō)明:

 - iterable -- 可迭代對(duì)象。
 - key --主要是用來(lái)進(jìn)行比較的元素,只有一個(gè)參數(shù),具體的函數(shù)的參數(shù)就是取自于可迭代對(duì)象中,指定可迭代對(duì)象中的一個(gè)元素來(lái)進(jìn)行排序。
 - reverse -- 排序規(guī)則,reverse = True 降序 , reverse = False 升序(默認(rèn))。

返回:
 - 一個(gè)新list對(duì)象 

sorted對(duì)字典dict排序

①按鍵key排序

from operator import itemgetter
dict = {3: 'B', 1: 'A', 2: 'C'}

# 按key升序  .items()取得3個(gè)(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個(gè)(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

①按一種規(guī)則排序list

from operator import itemgetter
data = [('c', 3, 'Apple'), ('d', 1, 'Cat'), ('a', 2, 'Banana')]
# 根據(jù)字母升序
print(sorted(data, key=lambda x: x[0], reverse=False)) # <class 'list'>
# 根據(jù)數(shù)字升序
print(sorted(data, key=lambda x: x[1], reverse=False)) # <class 'list'>
# 根據(jù)單詞升序
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')]

②按多種規(guī)則排序list

# 先按照成績(jī)降序排序,相同成績(jī)的按照名字升序排序:
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的混合

 先看看我們排序的有哪些類型的數(shù)據(jù)結(jié)構(gòu)

#### 二維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]}

#### 對(duì)字典中的多維list進(jìn)行排序
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']]
# 按先按成績(jī)號(hào)升序,再按成績(jī)數(shù)值升序
print(sorted(l1, key=itemgetter(2, 1), reverse=False))
# 按先按成績(jī)號(hào)升序,再按成績(jī)數(shù)值降序序
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
# 先按照成績(jī)降序排序,相同成績(jī)的按照名字升序排序:
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': ‘a(chǎn)lice', ‘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': ‘a(chǎn)lice', ‘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,如果需要轉(zhuǎn)為dict,再sorted前面套一個(gè)dict()就可以了
print(sorted(d1.items(), key=lambda x:(x[1][1], -ord(x[1][0]) ))) # 對(duì)字符比較需要ord。如果是'123'字符串?dāng)?shù)字可以使用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. 對(duì)字典中的多維list進(jìn)行排序

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]]}

到此這篇關(guān)于Python sorted對(duì)list和dict排序的文章就介紹到這了,更多相關(guān)Python sorted對(duì)list和dict排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django文件存儲(chǔ) 自己定制存儲(chǔ)系統(tǒng)解析

    Django文件存儲(chǔ) 自己定制存儲(chǔ)系統(tǒng)解析

    這篇文章主要介紹了Django文件存儲(chǔ) 自己定制存儲(chǔ)系統(tǒng)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python配置mysql的教程(推薦)

    Python配置mysql的教程(推薦)

    下面小編就為大家?guī)?lái)一篇Python配置mysql的教程(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Python對(duì)PDF文檔和PPT文檔的操作詳解

    Python對(duì)PDF文檔和PPT文檔的操作詳解

    Python辦公?動(dòng)化是利?Python編程語(yǔ)?來(lái)創(chuàng)建腳本和程序,以簡(jiǎn)化、加速和?動(dòng)化?常辦公任務(wù)和?作流程的過(guò)程,它基于Python的強(qiáng)?功能和豐富的第三?庫(kù),使得能夠處理各種辦公任務(wù),本文給大家介紹了Python對(duì)PDF文檔和PPT文檔的操作,需要的朋友可以參考下
    2023-12-12
  • 分析詳解python多線程與多進(jìn)程區(qū)別

    分析詳解python多線程與多進(jìn)程區(qū)別

    這篇文章主要為大家分析詳解了python多線程與多進(jìn)程區(qū)別,以及在使用過(guò)程中的注意要點(diǎn),有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • 解析Python中的__getitem__專有方法

    解析Python中的__getitem__專有方法

    __getitem__是Python雙下劃線包圍的special method之一,這里我們就來(lái)解析Python中的__getitem__專有方法的使用,需要的朋友可以參考下:
    2016-06-06
  • 基于CUDA out of memory的一種神奇解決方式

    基于CUDA out of memory的一種神奇解決方式

    這篇文章主要介紹了基于CUDA out of memory的一種神奇解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Sanic框架異常處理與中間件操作實(shí)例分析

    Sanic框架異常處理與中間件操作實(shí)例分析

    這篇文章主要介紹了Sanic框架異常處理與中間件操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了Sanic框架拋出異常、異常處理、中間件、監(jiān)聽器相關(guān)原理與操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python實(shí)現(xiàn)將PDF文件拆分任意頁(yè)數(shù)

    Python實(shí)現(xiàn)將PDF文件拆分任意頁(yè)數(shù)

    PyMuPDF,簡(jiǎn)稱fitz,是一個(gè)輕量級(jí)的Python庫(kù),它簡(jiǎn)化和封裝了PyMuPDF的功能,使得在Python中處理PDF文件更加簡(jiǎn)單,下面我們來(lái)看看如何使用他將PDF拆分任意頁(yè)數(shù)
    2025-02-02
  • Python 查詢學(xué)生的平均分?jǐn)?shù)的實(shí)現(xiàn)

    Python 查詢學(xué)生的平均分?jǐn)?shù)的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Python 查詢學(xué)生的平均分?jǐn)?shù)的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python的argparse庫(kù)使用詳解

    Python的argparse庫(kù)使用詳解

    argparse是python標(biāo)準(zhǔn)庫(kù)里面用來(lái)處理命令行參數(shù)的庫(kù),這篇文章主要介紹了Python的argparse庫(kù)使用詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10

最新評(píng)論

井陉县| 台中县| 青海省| 博客| 筠连县| 诸城市| 文安县| 增城市| 新乡县| 科尔| 永登县| 苍溪县| 利川市| 独山县| 建德市| 内黄县| 红原县| 长白| 杭州市| 新野县| 卢龙县| 新巴尔虎右旗| 丽水市| 靖安县| 隆回县| 平果县| 镇雄县| 琼中| 桐庐县| 永城市| 禹城市| 恩平市| 永登县| 黄陵县| 杭锦旗| 乌兰浩特市| 新建县| 集贤县| 正镶白旗| 东宁县| 姜堰市|