一、函数sort()
   
    1、
    
     sort()
    
    :仅对list对象进行排序,会改变list自身的顺序,没有返回值,即
    
     原地排序
    
    ;
   
    2、
    
     list.sort(key=None, reverse=False)
    
   
    
     key
    
    :设置排序方法,或指定list中用于排序的元素;
   
    
     reverse
    
    :升降序排列,默认为升序排列;False为升序,True为降序。
   
    3、
    
     维
    
    元素组成的list排序:忽略参数
    
     key
    
   
>>> a = ['TaoBao', 'Google', 'BaiDu']
>>> a.sort()
>>> a
['BaiDu', 'Google', 'TaoBao']
    4、
    
     dict
    
    
     组成的list排序
    
   
- 
     参数
 
 key
 
 获取
 
 dict
 
 的key或value值进行排序
>>> a = [{'dell': 200}, {'mac': 100}]
# 字典的value排序
>>> a.sort(key=lambda x: list(x.values()))
>>> a
[{'mac': 100}, {'dell': 200}]
# 字典的key排序
>>> a.sort(key=lambda x: list(x.keys()))
>>> a
[{'dell': 200}, {'mac': 100}]- 
     按
 
 dict
 
 的长度排序
>>> a = [{'mac': 200, 'huawei': 300, 'xiaomi': 150}, {'vivo': 210, 'Galaxy': 100}, {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}]
>>> a.sort(key=lambda x: len(x))
>>> a
[{'vivo': 210, 'Galaxy': 100}, {'mac': 200, 'huawei': 300, 'xiaomi': 150}, {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}]
    5、
    
     多维元素
    
    组成的list排序
   
- 
     按
 
 tuple
 
 的第
 
 2
 
 个元素排序
>>> a = [('mac', 3, 'b'), ('linux', 2, 'a'), ('mac', 1, 'c')]
>>> a
[('mac', 3, 'b'), ('linux', 2, 'a'), ('mac', 1, 'c')]
>>> a.sort(key=lambda x: x[1])    # lambda 函数:指定用于排序的元素
>>> a
[('mac', 1, 'c'), ('linux', 2, 'a'), ('mac', 3, 'b')]- 
     按
 
 tupel
 
 的第
 
 1
 
 个和
 
 3
 
 个元素进行排序
>>> a.sort(key=lambda x: (x[0], x[2]))
>>> a
[('linux', 2, 'a'), ('mac', 3, 'b'), ('mac', 1, 'c')]6、二维数组排序
(先按第二个元素降序,再按第一个元素升序)
>>> l=[['b',3],['z',2],['d',8],['a',3]]
>>> l.sort(key=lambda x:(-x[1],x[0]))
>>> l
[['d', 8], ['a', 3], ['b', 3], ['z', 2]]
    二、sorted()
   
    1、
    
     sorted()
    
    :对所有可迭代对象进行排序,返回排序后的新对象,原对象保持不变;
   
    2、
    
     sorted(iterable [, key[, reverse]])
    
   
    
     key
    
    :设置排序方法,或指定迭代对象中,用于排序的元素;
   
    
     reverse
    
    :升降序排列,默认为升序排列;False为升序,True为降序。
   
    3、
    
     一维元素
    
    组成的迭代对象排序
   
- 
     
 dict
 
 的
 
 key/value
 
 排序:返回
 
 key/value
 
 排序后组成的
 
 list
 
# key排序
>>> a = {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}
>>> sorted(a)
['Smartisan', 'lenovo', 'meizu', 'oppo']
# value排序
>>> a = {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}
>>> sorted(a.values())
[50, 80, 120, 200]- 
     
 dict
 
 的
 
 key/value
 
 排序:返回排序后
 
 (key, value)
 
 组成的
 
 list
 
# 按字典的value排序
>>> a = {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}
>>> sorted(a.items(), key=lambda x: x[1])
[('lenovo', 50), ('meizu', 80), ('Smartisan', 120), ('oppo', 200)]- 
     
 string
 
 排序:返回字符组成的list
>>> a = 'python'
>>> sorted(a)
['h', 'n', 'o', 'p', 't', 'y']- 
     
 string
 
 分割排序
>>> a = "This is a test string from Andrew"
>>> sorted(a.split(), key=str.lower)    # split()函数进行字符串分割,key指定排序的方法
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
    4、
    
     多维
    
    元素的排序
   
- 
     
 dict
 
 组成的
 
 tuple
 
 或
 
 list
 
 排序:方法类似
 
 sort()
 
>>> a = ({'dell': 200}, {'mac': 100})
>>> sorted(a, key=lambda x: list(x.values()))
[{'mac': 100}, {'dell': 200}]- 
     
 tuple
 
 组成的
 
 tuple
 
 或
 
 list
 
 排序:方法类似
 
 sort()
 
>>> a = (('mac', 3, 'b'), ('linux', 2, 'a'), ('mac', 1, 'c'))
>>> sorted(a, key=lambda x: (x[1], x[2]))    # 对tuple的第2、3个元素排序
[('mac', 1, 'c'), ('linux', 2, 'a'), ('mac', 3, 'b')]- 
     
 list
 
 组成的
 
 tuple
 
 或
 
 list
 
 排序:方法类似
 
 sort()
 
>>> a = [[1, 5, 9], [8, 4, 3], [4, 6, 2]]
>>> sorted(a, key=lambda x: x[0], reverse=True)    # 按第1个元素降序排列
[[8, 4, 3], [4, 6, 2], [1, 5, 9]]
    三、sort()与sorted()的区别和联系
   
    1、
    
     sort()
    
    :仅作用于list对象,没有返回值,修改对象本身;
   
    2、
    
     sorted()
    
    :作用于所有可迭代对象,返回新的排序对象,不修改原对象;
   
    3、
    
     sort()
    
    函数不需要复制原有列表,消耗的内存较少,效率也较高;
   
    4、
    
     sorted()
    
    函数功能强大,使用的范围更为广泛。
   
    转自:
    
     https://www.jianshu.com/p/419a8732ac62
    
   
 
