pythonsorted排序用法詳解
sorted排序
1. operator函式
在介紹sorted函式之前需要了解一下operator函式。
operator函式是python的內建函式,提供了一系列常用的函式操作
比如,operator.mul(x, y)等於x+y
這裡只介紹它的itemgetter() 方法,更多的介紹可參考官網。
operator — Standard operators as functions
operator模組提供的itemgetter函式用於獲取物件的哪些維的資料,引數為一些序號(即需要獲取的資料在物件中的序號),下面看例子。
- a = [1,2,3]
- >>> b=operator.itemgetter(1) //定義函式b,獲取物件的第1個域的值
- >>> b(a)
-
2
- >>> b=operator.itemgetter(1,0) //定義函式b,獲取物件的第1個域和第0個的值
- >>> b(a)
- (2, 1)
2. sorted函式
函式介紹:Built-in Function
官網示例:Sorting HOW TO?
函式原型:sorted(iterable[, cmp[, key[, reverse]]])
Return a new sorted list from the items in iterable.(會返回一個重新排列好的list)
iterable(可迭代):可以是list也可以是dict
cmp:可以自定義比較規則,這裡不詳細敘述
key:用於比較的值
reverse:指定是順序還是逆序
下面以dict排序為例做講解:
- c = {`a`: 15, `ab`: 6, `bc`: 16, `da`: 95}
-
- d = sorted(c.iteritems(),key=operator.itemgetter(0),reverse=True)
-
>>> [(`da`, 95), (`bc`, 16), (`ab`, 6), (`a`, 15)]
-
- e = sorted(c.iteritems(),key=operator.itemgetter(0),reverse=True)
- >>>[`da`, `bc`, `a`, `ab`]
1.注意區分dict加與不加iteritems() 對於結果的影響
2.我們的key選擇的是傳入引數的第0號元素,在這裡即是鍵(keys),所以最終的排序是按照鍵排序,我們也可以以值作為標準進行排序,看下面示例
- d = sorted(c.iteritems(),key=operator.itemgetter(1),reverse=True)
-
>>> [(`da`, 95), (`bc`, 16), (`a`, 15), (`ab`, 6)]
看到這你會不會覺得operator的itemgetter函式可以用lambda函式實現:我們可以將上面的示例改成lambda
- d = sorted(c.iteritems(),key=lambda x:x[1],reverse=True)
-
>>> [(`da`, 95), (`bc`, 16), (`a`, 15), (`ab`, 6)]
你看結果是一樣一樣的。
文章參考:
Python中的sorted函式以及operator.itemgetter函式
python中的operator庫
written by MARSGGBO
2017-2-14
相關文章
- Java map 詳解 - 用法、遍歷、排序、常用API等Java排序API
- extern用法詳解
- Metasploit用法詳解
- xargs用法詳解
- Nmap用法詳解
- mount用法詳解
- 堆排序詳解排序
- Flutter ListView 用法詳解FlutterView
- MyBatis Generator 用法詳解MyBatis
- iconfont用法詳解
- Promise用法詳解(一)Promise
- StringTie用法詳解
- SVG <markers>用法詳解SVG
- Elasticsearch SQL用法詳解ElasticsearchSQL
- git stash用法詳解Git
- JSONP用法詳解JSON
- Generator用法詳解+co
- appendChild()用法詳解APP
- jQuery 事件用法詳解jQuery事件
- SVG transform用法詳解SVGORM
- expdp/impdp 用法詳解
- expdp/impdp用法詳解
- awk sed 用法詳解
- JavaScript表格排序詳解JavaScript排序
- Java 物件排序詳解Java物件排序
- 氣泡排序和選擇排序詳解排序
- Ubuntu mount命令用法詳解Ubuntu
- axios的用法詳解iOS
- react-dnd 用法詳解React
- golang package time 用法詳解GolangPackage
- c++ vector用法詳解C++
- dataTransfer.setData() 用法詳解
- struct的匿名用法詳解Struct
- Python self用法詳解Python
- fcntl函式用法詳解函式
- eval()函式用法詳解函式
- jQuery stop()方法用法詳解jQuery
- STL中set用法詳解