【发布时间】:2016-09-26 00:36:18
【问题描述】:
我有一个类似[[1,2,"s"],[1,5,"e"],...] 的列表列表,其中第三个值始终是s 或e。如何调用 sort() 以便列表根据以下内容排序:
- 第一个索引
- 如果第一个索引相同,则
s优先。
谢谢
【问题讨论】:
标签: python sorting python-3.x
我有一个类似[[1,2,"s"],[1,5,"e"],...] 的列表列表,其中第三个值始终是s 或e。如何调用 sort() 以便列表根据以下内容排序:
s 优先。谢谢
【问题讨论】:
标签: python sorting python-3.x
您可以将自定义键函数传递给list.sort,用于生成项目的比较键:
>>> l = [[1, 5, 'e'], [1, 2, 's'], [0, 4, 'e']]
>>> l.sort(key=lambda x: (x[0], -ord(x[2])))
>>> l
[[0, 4, 'e'], [1, 2, 's'], [1, 5, 'e']]
【讨论】:
编写一个自定义的key 函数。
def sort_key(list_):
if list_[2] == 's':
return (list_[0], 0)
return (list_[0], 1)
test_list = [[1, 2, 's'], [1, 5, 'e'], [2, 4, 'e'], [2, 3, 's']]
test_list.sort(key=sort_key)
# [[1, 2, 's'], [1, 5, 'e'], [2, 3, 's'], [2, 4, 'e']]
【讨论】: