• 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']

  • 相关阅读:
    项目管理5大过程9大知识域44个定义
    linux centos6.5 修改ip地址
    .Net 6 已知问题集
    第二次阅读作业——程志
    采访大四学长整理笔记
    c#
    团队作业三两感想 by 程志
    搞定3G上网
    高焕堂Android應用框架原理與程式設計代码补遗(一)
    要素类属性内容全角换半角
  • 原文地址:https://www.cnblogs.com/pyonwu/p/10695148.html
Copyright © 2020-2023  润新知