按任意lambd排序

2024-04-28 03:26:42 发布

您现在位置:Python中文网/ 问答频道 /正文

如何根据任意函数描述的键对列表进行排序?例如,如果我有:

mylist = [["quux", 1, "a"], ["bar", 0, "b"]]

我想按每个成员的第二个元素对“mylist”进行排序,例如

sort(mylist, key=lambda x: x[1])

我该怎么做?


Tags: lambdakey函数元素列表排序bar成员
3条回答

你有两个选择,非常接近你所描述的,实际上:

mylist.sort(key=lambda x: x[1]) # In place sort
new_list = sorted(mylist, key=lambda x: x[1])

这是一种常见的需求,因此已将对它的支持以^{}的形式添加到标准库中:

from operator import itemgetter
mylist = [["quux", 1, "a"], ["bar", 0, "b"]]
mylist.sort(key=itemgetter(1)) # or sorted(mylist, key=...)

你基本上已经有了:

>>> mylist = [["quux", 1, "a"], ["bar", 0, "b"]]
>>> mylist.sort(key=lambda x: x[1])
>>> print mylist

给出:

[['bar', 0, 'b'], ['quux', 1, 'a']]

这会把我的名单整理好。

[由于@Daniel的更正,此段已编辑。]sorted将返回一个已排序的新列表,而不是实际更改输入,如http://wiki.python.org/moin/HowTo/Sorting/中所述。

相关问题 更多 >