>>a=[1,9,3,7,2,0,5]>>>a.sort()>>>printa[0,1,2,3,5,7,9]>>>a.sort(reverse=True)>>>printa[9,7,5,3,2,1,0]>>>b=['e','a','be','ad','dab','dbc']>>>b.sort()>>>printb['a','ad','be'" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python中字典(dict)和列表(list)的排序方法實(shí)例

系統(tǒng) 1911 0

一、對列表(list)進(jìn)行排序

推薦的排序方式是使用內(nèi)建的sort()方法,速度最快而且屬于穩(wěn)定排序

復(fù)制代碼 代碼如下:

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

對列表的排序是遵循DSU(decorate-sort-undecorate)模式的,序列是安裝條目的順序進(jìn)行比較的,對剛剛例子中的字符串來說,就是按照從左到右的順序,逐個(gè)字符進(jìn)行比較,一旦得出結(jié)果就停止比較。

二、對字典(dict)進(jìn)行排序

其實(shí)字典(dict)是一個(gè)無序序列,談不上排序,我們只能按照字典的鍵/值進(jìn)行排序,然后讓對應(yīng)值/鍵也處于同樣的順序
任何對字典的排序問題,都要最終歸結(jié)為對字典(dict)的鍵(key)或者值(value)組成的列表(list)的排序

1、按字典(dict)的鍵進(jìn)行排序[1]

復(fù)制代碼 代碼如下:

def sortedDictValues(adict,reverse=False):
?keys = adict.keys()
?keys.sort(reverse=reverse)
?return [adict[key] for key in keys]

如果需要同時(shí)返回鍵和值的話,之用將最后的return語句改為:
復(fù)制代碼 代碼如下:
return [(key,adict[key]]) for key in keys]

還有一種書寫簡單的方法,就是使用內(nèi)置的sorted()方法進(jìn)行排序:
復(fù)制代碼 代碼如下:

>>> d = {'c':1,'e':'5','b':7}
>>> sorted(d.items())
[('b', 7), ('c', 1), ('e', '5')]

不過性能會(huì)有些許的下降,如果很苛求性能,還是使用原生對list.sort()方法比較好

2、按字典(dict)的值進(jìn)行排序[2]

復(fù)制代碼 代碼如下:

def sorted_dict(container, keys, reverse):
?"""返回 keys 的列表,根據(jù)container中對應(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)同樣的功能:
復(fù)制代碼 代碼如下:
sorted(d.items(), key=lambda d:d[1], reverse=True)

三、結(jié)語

通過以上代碼的分析,大致總結(jié)處以下幾條原則:
* 對字典的排序,最終都要?dú)w結(jié)為對字典的鍵或者值組成的列表的排序
* 對列表的排序,優(yōu)先使用內(nèi)置的list.sort()方法


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論