Python中字典(dict)和列表(list)的排序方法實(shí)例
一、對(duì)列表(list)進(jìn)行排序
推薦的排序方式是使用內(nèi)建的sort()方法,速度最快而且屬于穩(wěn)定排序
>>> a = [1,9,3,7,2,0,5]
>>> a.sort()
>>> print a
[0, 1, 2, 3, 5, 7, 9]
>>> a.sort(reverse=True)
>>> print a
[9, 7, 5, 3, 2, 1, 0]
>>> b = ['e','a','be','ad','dab','dbc']
>>> b.sort()
>>> print b
['a', 'ad', 'be', 'dab', 'dbc', 'e']
對(duì)列表的排序是遵循DSU(decorate-sort-undecorate)模式的,序列是安裝條目的順序進(jìn)行比較的,對(duì)剛剛例子中的字符串來(lái)說(shuō),就是按照從左到右的順序,逐個(gè)字符進(jìn)行比較,一旦得出結(jié)果就停止比較。
二、對(duì)字典(dict)進(jìn)行排序
其實(shí)字典(dict)是一個(gè)無(wú)序序列,談不上排序,我們只能按照字典的鍵/值進(jìn)行排序,然后讓對(duì)應(yīng)值/鍵也處于同樣的順序
任何對(duì)字典的排序問(wèn)題,都要最終歸結(jié)為對(duì)字典(dict)的鍵(key)或者值(value)組成的列表(list)的排序
1、按字典(dict)的鍵進(jìn)行排序[1]
def sortedDictValues(adict,reverse=False):
keys = adict.keys()
keys.sort(reverse=reverse)
return [adict[key] for key in keys]
如果需要同時(shí)返回鍵和值的話,之用將最后的return語(yǔ)句改為:
還有一種書(shū)寫(xiě)簡(jiǎn)單的方法,就是使用內(nèi)置的sorted()方法進(jìn)行排序:
>>> d = {'c':1,'e':'5','b':7}
>>> sorted(d.items())
[('b', 7), ('c', 1), ('e', '5')]
不過(guò)性能會(huì)有些許的下降,如果很苛求性能,還是使用原生對(duì)list.sort()方法比較好
2、按字典(dict)的值進(jìn)行排序[2]
def sorted_dict(container, keys, reverse):
"""返回 keys 的列表,根據(jù)container中對(duì)應(yīng)的值排序"""
aux = [ (container[k], k) for k in keys]
aux.sort()
if reverse: aux.reverse()
return [k for v, k in aux]
同樣可以用sorted()方法實(shí)現(xiàn)同樣的功能:
三、結(jié)語(yǔ)
通過(guò)以上代碼的分析,大致總結(jié)處以下幾條原則:
* 對(duì)字典的排序,最終都要?dú)w結(jié)為對(duì)字典的鍵或者值組成的列表的排序
* 對(duì)列表的排序,優(yōu)先使用內(nèi)置的list.sort()方法
- python中字典dict排序sorted的實(shí)現(xiàn)
- Python sorted對(duì)list和dict排序
- Python OrderedDict字典排序方法詳解
- Python按照l(shuí)ist dict key進(jìn)行排序過(guò)程解析
- Python 按字典dict的鍵排序,并取出相應(yīng)的鍵值放于list中的實(shí)例
- python 對(duì)key為時(shí)間的dict排序方法
- python中dict字典的查詢(xún)鍵值對(duì) 遍歷 排序 創(chuàng)建 訪問(wèn) 更新 刪除基礎(chǔ)操作方法
- python 字典(dict)按鍵和值排序
- Python中dict排序的兩種方法
相關(guān)文章
基于matplotlib中ion()和ioff()的使用詳解
這篇文章主要介紹了基于matplotlib中ion()和ioff()的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python 爬蟲(chóng)基本使用——統(tǒng)計(jì)杭電oj題目正確率并排序
這篇文章主要介紹了python 爬蟲(chóng)基本的基本使用,主要利用了Urllib和BeautifulSoup4這兩個(gè)庫(kù),配以簡(jiǎn)單的實(shí)例幫助大家理解,感興趣的朋友可以了解下2020-10-10
Python實(shí)現(xiàn)線性判別分析(LDA)的MATLAB方式
今天小編大家分享一篇Python實(shí)現(xiàn)線性判別分析(LDA)的MATLAB方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python數(shù)據(jù)結(jié)構(gòu)詳細(xì)
本文將詳細(xì)講解Python的數(shù)據(jù)結(jié)構(gòu),下面我們將講解Python關(guān)于關(guān)于列表更多的內(nèi)容以及del 語(yǔ)句和元組和序列等一些具體內(nèi)容,需要的下伙伴可以參考一下2021-09-09
pyqt遠(yuǎn)程批量執(zhí)行Linux命令程序的方法
今天小編就為大家分享一篇pyqt遠(yuǎn)程批量執(zhí)行Linux命令程序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
Python實(shí)現(xiàn)根據(jù)IP地址和子網(wǎng)掩碼算出網(wǎng)段的方法
這篇文章主要介紹了Python實(shí)現(xiàn)根據(jù)IP地址和子網(wǎng)掩碼算出網(wǎng)段的方法,涉及Python基于Linux平臺(tái)的字符串操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
python利用itertools生成密碼字典并多線程撞庫(kù)破解rar密碼
這篇文章主要介紹了python利用itertools生成密碼字典并多線程撞庫(kù)破解rar密碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
python爬蟲(chóng) 基于requests模塊的get請(qǐng)求實(shí)現(xiàn)詳解
這篇文章主要介紹了python爬蟲(chóng) 基于requests模塊的get請(qǐng)求實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08

