V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whx20202
V2EX  ›  程序员

Python 排序,第一个 key 降序,如果相同,第二个 key 升序,这种是不是只能硬写?

  •  
  •   whx20202 · 2017-03-28 11:22:20 +08:00 · 4790 次点击
    这是一个创建于 2795 天前的主题,其中的信息可能已经有所发展或是发生改变。

    突然想知道有没有什么简短的方法,在性能不是主要问题的时候

    百度了一下好像有个 DSU 能用一下

    15 条回复    2017-03-28 17:36:30 +08:00
    Monad
        1
    Monad  
       2017-03-28 11:25:31 +08:00 via iPhone   ❤️ 1
    想优雅而不考虑性能可以 sort 两次
    第一次随意 sort
    第二次 stable_sort
    kingmo888
        2
    kingmo888  
       2017-03-28 11:30:05 +08:00
    好像说, pandas 多好。
    Lycnir
        3
    Lycnir  
       2017-03-28 11:30:19 +08:00
    sorted 里面的 key 参数不能处理这个问题吗?
    ryd994
        4
    ryd994  
       2017-03-28 11:31:08 +08:00 via Android   ❤️ 1
    活用 cmp 参数就行了,不需要两次
    python3 可以用 cmptokey 转换

    或者直接 key=(key1, -key2)仅限于 key 是数字的情况

    rtfm
    glasslion
        5
    glasslion  
       2017-03-28 11:32:53 +08:00
    sorted(lst, key = lambda x: (x[0], -x[1])) 不就行了
    hand515
        6
    hand515  
       2017-03-28 11:33:11 +08:00
    sorted(cmp=)不是有这个可以传函数进去吗?
    whx20202
        7
    whx20202  
    OP
       2017-03-28 11:40:21 +08:00
    66666 各种方式 学到了
    wplct
        8
    wplct  
       2017-03-28 11:53:58 +08:00
    python 都支持用方法排序了,想怎么样都可以啊
    mxi1
        9
    mxi1  
       2017-03-28 11:57:11 +08:00 via iPhone
    前几天才在知乎上看到这个利用 sort 的 key 来实现多种排序方法的语法糖示例, https://www.zhihu.com/question/57470958/answer/153398323
    laike9m
        10
    laike9m  
       2017-03-28 12:47:09 +08:00   ❤️ 1
    @mxi1 ヽ(✿゚▽゚)ノ
    KIDJourney
        11
    KIDJourney  
       2017-03-28 13:08:20 +08:00
    为什么会有人把这个当成语法糖。
    mxi1
        12
    mxi1  
       2017-03-28 13:34:48 +08:00 via iPhone
    @KIDJourney 估计是参考其他语言的设计来说的,比如 C#就有很多语法糖
    ryd994
        13
    ryd994  
       2017-03-28 14:02:30 +08:00 via Android
    @mxi1 这不叫语法糖……… C++也是这样的啊
    phithon
        14
    phithon  
       2017-03-28 14:52:24 +08:00
    曾用过的一个方法,好像并不简短,但每次要用的时候都会拿来用,方便

    https://gist.github.com/phith0n/20ad17cbd487a833ad3022d366d63f04
    KIDJourney
        15
    KIDJourney  
       2017-03-28 17:36:30 +08:00
    @mxi1 这是个锤子的语法糖啊。

    你觉得这个是语法糖吗。

    https://gist.github.com/KIDJourney/0ec45fd79c049b21b9911b9b36b218f8
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:08 · PVG 04:08 · LAX 12:08 · JFK 15:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.