zoukankan      html  css  js  c++  java
  • python sorted函数多条件排序是怎么回事


      首先,要知道sorted 内部实现使用了归并排序,而归并排序是稳定的排序,就是说当元素比不出大小时,其相对位置是不变的。


      那么,利用稳定排序的特性,key函数有几个返回值就排序几次,先排序次要条件,后排序主要条件,用主要条件覆盖次要条件,主要条件相同时,又不会改变之前排好的次要条件的相对位置,就实现了多条件排序。

      给我们的直观效果是,主要条件排不出先后顺序的元素,就按照次要条件排序。

      在python中具体是如何实现的呢?

      sorted(iterable, key, reverse)

      key参数,接收一个函数地址,用来设置排序条件,这里我们经常使用匿名函数。

      iterable的每一个元素作为参数传入key函数,key函数的返回值就是排序依据,当返回值为一个元祖时,这个元祖中的多个元素即为多个排序条件,从前到后重要程度依次降低。

      下面的例子,演示按照元素第三位、第二位、第一位的字典顺序这三个条件对列表进行排序。

    lis = ['a1b', 'a2a', 'a3b', 'b5d', 'a4f', 'c3f', 'b3f', 'a6f', 'c1f', 'a1a']
    print(sorted(lis, key=lambda x: (x[2], x[1], x[0])))

      排序结果:['a1a', 'a2a', 'a1b', 'a3b', 'b5d', 'c1f', 'b3f', 'c3f', 'a4f', 'a6f']

  • 相关阅读:
    根据服务端生成的WSDL文件创建客户端支持代码的三种方式
    2017第45周一java多线程创建方法
    java 分布式锁
    设计的背后
    Java中的锁概念
    maven变量
    清零成长法
    Java消息队列
    Java9的新特性
    2017第43周日
  • 原文地址:https://www.cnblogs.com/pyonwu/p/10695148.html
Copyright © 2011-2022 走看看