python - Python:按两个标准而不是一个标准对列表列表进行排序
问题描述
我有一个 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']]
有谁知道我该怎么做?
感谢您的每一个提示!
解决方案
如果你传递一个元组,Python 会自动按超过 1 个条件排序。在您的情况下,它将是:
p = [[6, 'k'], [5, 'l'], [2, 'p'], [2, 'd'], [5, 'k']]
sorted_p = sorted(p, key=lambda x:(int(x[0]),x[1]))
推荐阅读
- angular - Angular Material 以编程方式添加选项卡
- java - Apache HttpAsyncClient 线程计数配置
- android - BLE onCharacteristicRead 接收状态 133
- android - Android 安装引荐来源网址:pcampaignid=APPU_2
- node.js - Express NodeJS 应用程序中的解析错误响应
- scala - 声明 SparkContext 类型并从 spark-cassandra-connector 访问 cassandraTable
- homebrew - 无法确定链接的 PHP - Homebrew
- python - Python Pandas - 根据匹配条件创建一个新的 df 列
- php - 通过 PHP mail() 函数发送的 HTML 未在邮件中正确显示
- java - Maven - 检测项目中相同依赖项的多个版本