当前位置:   article > 正文

Python3,函数sort()与sorted()_sorted(x.values)

sorted(x.values)

一、函数sort()

1、sort() :仅对list对象进行排序,会改变list自身的顺序,没有返回值,即原地排序

2、list.sort(key=None, reverse=False)

      key :设置排序方法,或指定list中用于排序的元素;

      reverse :升降序排列,默认为升序排列;False为升序,True为降序。

3、元素组成的list排序:忽略参数key

  1. >>> a = ['TaoBao', 'Google', 'BaiDu']
  2. >>> a.sort()
  3. >>> a
  4. ['BaiDu', 'Google', 'TaoBao']

4、dict组成的list排序

  • 参数key获取dict的key或value值进行排序
  1. >>> a = [{'dell': 200}, {'mac': 100}]
  2. # 字典的value排序
  3. >>> a.sort(key=lambda x: list(x.values()))
  4. >>> a
  5. [{'mac': 100}, {'dell': 200}]
  6. # 字典的key排序
  7. >>> a.sort(key=lambda x: list(x.keys()))
  8. >>> a
  9. [{'dell': 200}, {'mac': 100}]
  • dict的长度排序
  1. >>> a = [{'mac': 200, 'huawei': 300, 'xiaomi': 150}, {'vivo': 210, 'Galaxy': 100}, {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}]
  2. >>> a.sort(key=lambda x: len(x))
  3. >>> a
  4. [{'vivo': 210, 'Galaxy': 100}, {'mac': 200, 'huawei': 300, 'xiaomi': 150}, {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}]

5、多维元素 组成的list排序

  • tuple的第2个元素排序
  1. >>> a = [('mac', 3, 'b'), ('linux', 2, 'a'), ('mac', 1, 'c')]
  2. >>> a
  3. [('mac', 3, 'b'), ('linux', 2, 'a'), ('mac', 1, 'c')]
  4. >>> a.sort(key=lambda x: x[1]) # lambda 函数:指定用于排序的元素
  5. >>> a
  6. [('mac', 1, 'c'), ('linux', 2, 'a'), ('mac', 3, 'b')]
  • tupel的第1个和3个元素进行排序
  1. >>> a.sort(key=lambda x: (x[0], x[2]))
  2. >>> a
  3. [('linux', 2, 'a'), ('mac', 3, 'b'), ('mac', 1, 'c')]

6、二维数组排序

(先按第二个元素降序,再按第一个元素升序)

  1. >>> l=[['b',3],['z',2],['d',8],['a',3]]
  2. >>> l.sort(key=lambda x:(-x[1],x[0]))
  3. >>> l
  4. [['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
  1. # key排序
  2. >>> a = {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}
  3. >>> sorted(a)
  4. ['Smartisan', 'lenovo', 'meizu', 'oppo']
  5. # value排序
  6. >>> a = {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}
  7. >>> sorted(a.values())
  8. [50, 80, 120, 200]
  • dictkey/value排序:返回排序后(key, value)组成的list
  1. # 按字典的value排序
  2. >>> a = {'Smartisan': 120, 'oppo': 200, 'lenovo': 50, 'meizu': 80}
  3. >>> sorted(a.items(), key=lambda x: x[1])
  4. [('lenovo', 50), ('meizu', 80), ('Smartisan', 120), ('oppo', 200)]
  • string排序:返回字符组成的list
  1. >>> a = 'python'
  2. >>> sorted(a)
  3. ['h', 'n', 'o', 'p', 't', 'y']
  • string分割排序
  1. >>> a = "This is a test string from Andrew"
  2. >>> sorted(a.split(), key=str.lower) # split()函数进行字符串分割,key指定排序的方法
  3. ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

4、多维元素的排序

  • dict组成的tuplelist排序:方法类似sort()
  1. >>> a = ({'dell': 200}, {'mac': 100})
  2. >>> sorted(a, key=lambda x: list(x.values()))
  3. [{'mac': 100}, {'dell': 200}]
  • tuple组成的tuplelist排序:方法类似sort()
  1. >>> a = (('mac', 3, 'b'), ('linux', 2, 'a'), ('mac', 1, 'c'))
  2. >>> sorted(a, key=lambda x: (x[1], x[2])) # 对tuple的第2、3个元素排序
  3. [('mac', 1, 'c'), ('linux', 2, 'a'), ('mac', 3, 'b')]
  • list组成的tuplelist排序:方法类似sort()
  1. >>> a = [[1, 5, 9], [8, 4, 3], [4, 6, 2]]
  2. >>> sorted(a, key=lambda x: x[0], reverse=True) # 按第1个元素降序排列
  3. [[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


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/824425
推荐阅读
相关标签
  

闽ICP备14008679号