赞
踩
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排序
- >>> 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}]
- >>> 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排序
- >>> 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')]
- >>> 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]]
1、sorted() :对所有可迭代对象进行排序,返回排序后的新对象,原对象保持不变;
2、sorted(iterable [, key[, reverse]])
key :设置排序方法,或指定迭代对象中,用于排序的元素;
reverse :升降序排列,默认为升序排列;False为升序,True为降序。
3、一维元素组成的迭代对象排序
- # 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]
- # 按字典的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)]
- >>> a = 'python'
- >>> sorted(a)
- ['h', 'n', 'o', 'p', 't', 'y']
- >>> a = "This is a test string from Andrew"
- >>> sorted(a.split(), key=str.lower) # split()函数进行字符串分割,key指定排序的方法
- ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
4、多维元素的排序
- >>> a = ({'dell': 200}, {'mac': 100})
- >>> sorted(a, key=lambda x: list(x.values()))
- [{'mac': 100}, {'dell': 200}]
- >>> 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')]
- >>> 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]]
1、sort():仅作用于list对象,没有返回值,修改对象本身;
2、sorted():作用于所有可迭代对象,返回新的排序对象,不修改原对象;
3、sort()函数不需要复制原有列表,消耗的内存较少,效率也较高;
4、sorted()函数功能强大,使用的范围更为广泛。
转自:https://www.jianshu.com/p/419a8732ac62
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。