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