如何在Python中按特定规则对列表的列表进行排序?
实现多级优先级的列表排序
你只需要修改sorted函数的key参数,让它返回一个包含第一个元素和第二个元素的元组即可,Python会自动按元组内元素的顺序依次作为排序优先级:
mix_data_1 = sorted(mix_data, key=lambda x: (x[0], x[1]))
原理说明
当key返回元组时,Python的排序逻辑是:
- 首先比较元组的第一个元素(对应子列表的索引0元素)
- 若第一个元素相同,则比较元组的第二个元素(对应子列表的索引1元素)
- 以此类推,完全匹配你需要的优先级规则
示例验证
用你给出的数字列表测试:
输入:
mix_data = [[3, 4, 3],[2, 6, 2],[2, 5, 6]]
执行排序代码后得到的输出:
[[2, 5, 6], [2, 6, 2], [3, 4, 3]]
和你期望的结果完全一致。
字符串元素的适配
因为你实际的元素是字符串,这个方法同样适用——Python会按照字符串的字典序进行比较,比如对于子列表["b", "a", "c"]和["b", "b", "a"],排序时会先比较第一个字符串"b"和"b"(相同),再比较第二个字符串"a"和"b",最终["b", "a", "c"]会排在前面。
内容的提问来源于stack exchange,提问作者Nathan Vidal
相关产品推荐
相关产品推荐

