Python实战小程序——简单的排序

实战要求:数组套字典的排序(用lambda实现)

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。

猜你喜欢

转载自blog.csdn.net/misayaaaaa/article/details/53087297