Python中字典(dict)和列表(list)的排序方法實例
一、對列表(list)進行排序
推薦的排序方式是使用內(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']
對列表的排序是遵循DSU(decorate-sort-undecorate)模式的,序列是安裝條目的順序進行比較的,對剛剛例子中的字符串來說,就是按照從左到右的順序,逐個字符進行比較,一旦得出結(jié)果就停止比較。
二、對字典(dict)進行排序
其實字典(dict)是一個無序序列,談不上排序,我們只能按照字典的鍵/值進行排序,然后讓對應(yīng)值/鍵也處于同樣的順序
任何對字典的排序問題,都要最終歸結(jié)為對字典(dict)的鍵(key)或者值(value)組成的列表(list)的排序
1、按字典(dict)的鍵進行排序[1]
def sortedDictValues(adict,reverse=False):
keys = adict.keys()
keys.sort(reverse=reverse)
return [adict[key] for key in keys]
如果需要同時返回鍵和值的話,之用將最后的return語句改為:
還有一種書寫簡單的方法,就是使用內(nèi)置的sorted()方法進行排序:
>>> d = {'c':1,'e':'5','b':7}
>>> sorted(d.items())
[('b', 7), ('c', 1), ('e', '5')]
不過性能會有些許的下降,如果很苛求性能,還是使用原生對list.sort()方法比較好
2、按字典(dict)的值進行排序[2]
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()方法實現(xiàn)同樣的功能:
三、結(jié)語
通過以上代碼的分析,大致總結(jié)處以下幾條原則:
* 對字典的排序,最終都要歸結(jié)為對字典的鍵或者值組成的列表的排序
* 對列表的排序,優(yōu)先使用內(nèi)置的list.sort()方法
相關(guān)文章
selenium+python自動化測試之使用webdriver操作瀏覽器的方法
這篇文章主要介紹了selenium+python自動化測試之使用webdriver操作瀏覽器的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01布同 統(tǒng)計英文單詞的個數(shù)的python代碼
最近需要翻譯英文文章,所以需要統(tǒng)計單詞個數(shù)。索性寫了一段代碼在此,可以簡單的統(tǒng)計單詞的個數(shù)2011-03-03