Python中sort()和sorted()的区别

1、sort()是可变对象(字典)的方法,无参数无返回值,  sort()会改变可变对象,因此无需返回值。例如:

list:

1 >>> a = [4,3,7,8]
2 >>> a.sort()
3 >>> a
4 [3, 4, 7, 8]

即sort()直接将可变对象的值给改变了。

或者:

1 >>> elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]
2 >>> elements.sort()
3 >>> elements
4 [(1, 3, 'L'), (1, 11, 'N'), (2, 4, 'B'), (2, 12, 'A')]  #elements.sort() 按每个元组的第一个元素排序
5 >>> 

 

 

 

 

2、sorted()是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表。

list:

1 >>> a = [4,3,7,8]
2 >>> sorted(a)
3 [3, 4, 7, 8]
4 >>> a
5 [4, 3, 7, 8]

即sorted会返会一个list副本,同时将原来list的值改变了可将这个返回的值赋给其他变量。

 

dict:

1 >>> b = {1:'ab',2:'degg',4:'ght',9:'d'}
2 >>> sorted(b)
3 [1, 2, 4, 9]
4 >>> b
5 {1: 'ab', 2: 'degg', 4: 'ght', 9: 'd'}

即sorted(dict)时,是按key排序,同时将key返回成一个列表。

或者指定排序的条件:

 1 >>> b = {1:'ab',2:'degg',4:'ght',9:'d'}
 2 >>> sorted(b.items(),key=lambda i:i[0])            #指定按字典里面的键排序
 3 [(1, 'ab'), (2, 'degg'), (4, 'ght'), (9, 'd')]   
 4 >>> 
 5 >>> 
 6 >>> sorted(b.items(),key=lambda i:len(i[1]))       #指定按字典里的value长度排序,默认从小到大
 7 [(9, 'd'), (1, 'ab'), (4, 'ght'), (2, 'degg')]
 8 >>> 
 9 >>> 
10 >>> sorted(b.items(),key=lambda i:len(i[1]),reverse=True)   #指定按字典里的value长度排序,同时进行翻转,即按value的长度从大到小排列
11 [(2, 'degg'), (4, 'ght'), (1, 'ab'), (9, 'd')]

过程为:b.iterms()得到字典b的[ (键,值)] 列表,通过key这个参数,指定排序的方式是键 ( [0] ) 还是值( [1] ),reverse = True表示是需要翻转的,默认是从小到大,翻转的话,那就是从大到小。

 

参考:

http://www.cnblogs.com/xiao--yao/p/5024542.html

http://www.cnpythoner.com/post/266.html

posted @ 2017-05-13 23:45  Bio-Liu  阅读(1939)  评论(0编辑  收藏  举报