5

我的数据结构是 Python 中的一个元组列表,我希望能够根据它们的元组中包含的值对列表项进行排序。在 PHP 中,我通常会使用 usort() 创建自己的排序函数。我可以使用 Python 中的等价物吗?

4

3 回答 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 回答