【发布时间】:2021-04-23 15:59:51
【问题描述】:
我有一个 Python 排序问题,与我在 stackoverflow 上发现的其他问题类似,但并不完全相同。让我告诉你,也许有人可以帮忙:
假设我们有一个可能看起来像这样的列表:
p = [[6, 'k'], [5, 'l'], [2, 'p'], [2, 'd'], [5, 'k']]
我想按两个 (!) 标准对此进行排序。按一个标准对其进行排序是相当容易和直接的。假设我想首先按每个列表的第一项对其进行排序。我可以这样实现:
sorted_p = sorted(p, key=lambda x:int(x[0]))
到目前为止一切顺利。我会得到以下 sorted_p:
[[2,'p'], [2, 'd'], [5, 'l'], [5, 'k'], [6, 'k']]
现在真正的麻烦开始了:我希望在第一项多次出现的情况下(例如,我们有两个以 2 开头的元组和两个以 5 开头的元组),然后这些元组按第二项排序的元组。所以我想得到的结果是
[[2,'d'], [2, 'p'], [5, 'k'], [5, 'l'], [6, 'k']]
有人知道我该怎么做吗?
感谢您的每一个提示!
【问题讨论】:
-
又快又脏的可能是
key=lambda x: 1000 * x[0] + ord( x[1] ) -
...或者看here
-
对不起,我应该解释一下,这些只是示例值。很可能第一项是字母或句子,第二项是浮动的或其他东西。所以我需要一种相当通用的方法来解决这个问题,而不是一种快速而肮脏的方法。不过还是谢谢
-
嘿,链接看起来很有希望!午饭后我会潜入它:)
-
谢谢@mikuszefski,链接效果很好!
标签: python arrays list sorting