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

2017-03-28 11:22:20 +08:00
 whx20202

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

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

4786 次点击
所在节点    程序员
15 条回复
Monad
2017-03-28 11:25:31 +08:00
想优雅而不考虑性能可以 sort 两次
第一次随意 sort
第二次 stable_sort
kingmo888
2017-03-28 11:30:05 +08:00
好像说, pandas 多好。
Lycnir
2017-03-28 11:30:19 +08:00
sorted 里面的 key 参数不能处理这个问题吗?
ryd994
2017-03-28 11:31:08 +08:00
活用 cmp 参数就行了,不需要两次
python3 可以用 cmptokey 转换

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

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

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

你觉得这个是语法糖吗。

https://gist.github.com/KIDJourney/0ec45fd79c049b21b9911b9b36b218f8

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/350838

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX