我的数据结构是 Python 中的一个元组列表,我希望能够根据它们的元组中包含的值对列表项进行排序。在 PHP 中,我通常会使用 usort() 创建自己的排序函数。我可以使用 Python 中的等价物吗?
user496650
问问题
1605 次
3 回答
8
给sort()
方法一个key
函数:
>>> my_list = [(1, 2), (3, 4), (2, 1), (3, 2)]
>>> my_list.sort(key=lambda x: x[1])
>>> my_list
[(2, 1), (1, 2), (3, 2), (3, 4)]
>>>
如果您需要获取排序列表,而不是就地排序,请使用 built_insorted()
>>> sorted(my_list, key=lambda x: x[1])
[(2, 1), (1, 2), (3, 2), (3, 4)]
于 2012-08-07T15:05:47.140 回答
3
没有预制函数可以做到这一点,但是使用操作员模块函数作为排序的关键函数可以相当容易地完成。如代码示例所示,您可以使用
from operator import itemgetter
tuple_list.sort(key=itemgetter(1))
这将按元组中的索引 1 元素排序。
于 2012-08-07T15:07:41.320 回答
0
这是模拟的:
def usort(array, callback):
from functools import cmp_to_key
import inspect
return array.sort(key=cmp_to_key(callback))
于 2021-10-14T05:03:04.447 回答