Python實戰小程式——簡單的排序
dict = [
{'id':'4','name':'b'},
{'id':'6','name':'c'},
{'id':'3','name':'a'},
{'id':'1','name':'g'},
{'id':'8','name':'f'}
]
排序後:[{'id': '1', 'name': 'g'}, {'id': '3', 'name': 'a'}, {'id': '4', 'name': 'b'}, {'id': '6', 'name': 'c'}, {'id': '8', 'name': 'f'}]
首先介紹一下Python中排序的兩個函式:sort()和sorted()。
1、sort()
sort()函式是Python的內建函式,基本形式如下:sort(fun,key,Reverse=False),第一個引數fun指的是函式所運用的排序演算法:預設為歸併排序。第二個引數key,指的是自己規定的排序規則,一般可以用匿名函式,此排序規則會在元素比較之前被呼叫。第三個引數Reverse表示的是升序還是降序,預設為False時為升序,Reverse=True可改為升序,並且sort函式會改變當前物件。
總結一句話:sort()是可變物件(字典、列表)的方法,無引數,無返回值,sort()會改變可變物件,因此無需返回值
2.sorted()
sorted()函式是一個全域性函式,基本形式和sort()相似,但是不同的是它會返回一個全新的排序後的副本,而不是改變當前物件。還有一點不同的是:sorted()是python的內建函式,並不是可變物件(列表、字典)的特有方法,sorted()函式需要一個引數(引數可以是列表、字典、元組、字串),無論傳遞什麼引數
#coding:utf-8 list1 = [(2,'huan',23),(12,'the',14),(23,'liu',90)] #使用預設引數進行排序,即按照元組中第一個元素進行排序 list1.sort() print list1 #輸出結果為[(2, 'huan', 23), (12, 'the', 14), (23, 'liu', 90)] #使用匿名錶達式重寫key所代表的函式,按照元組的第二個元素進行排序 list1.sort(key=lambda x:(x[1])) print list1 #[(2, 'huan', 23), (23, 'liu', 90), (12, 'the', 14)] #使用匿名錶達式重寫key所代表的函式,按照元組的第三個元素進行排序 list1.sort(key=lambda x:(x[2])) print list1 #[(12, 'the', 14), (2, 'huan', 23), (23, 'liu', 90)] #使用匿名函式重寫key所代表的函式,先按照元組中下標為2的進行排序, # 對於下標2處元素相同的,則按下標為0處的元素進行排序 list1.sort(key=lambda x:(x[2],x[0])) print list1 #[(12, 'the', 14), (2, 'huan', 23), (23, 'liu', 90)]
list1 = [(2,'huan',23),(12,'the',14),(23,'liu',90)]
list2 = sorted(list1,key=lambda x:(x[2]))
print list2
<pre name="code" class="python">#[(12, 'the', 14), (2, 'huan', 23), (23, 'liu', 90)]
上面是幾個簡單的例子,幫助理解。
理解了上面的幾個例子,那麼下面的解題就顯得相當簡單了。
#coding=utf-8
dict = [
{'id':'4','name':'b'},
{'id':'6','name':'c'},
{'id':'3','name':'a'},
{'id':'1','name':'g'},
{'id':'8','name':'f'}
]
mydict=sorted(dict, key=lambda x:x["id"])
print mydict
排序成功!~
人生苦短,我用python。