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。