基于第二个参数对元组进行排序

use*_*703 84 python sorting tuples

我有一个类似于下面的元组列表:

("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)
Run Code Online (Sandbox Code Playgroud)

我想要产生的是按元组的第二个值按升序排序的列表.所以L [0]应该("Person 2", 8)在排序之后.

我怎样才能做到这一点?使用Python 3.2.2如果有帮助.

Sve*_*ach 170

您可以使用该key参数list.sort():

my_list.sort(key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

或者,稍快一点,

my_list.sort(key=operator.itemgetter(1))
Run Code Online (Sandbox Code Playgroud)

(与任何模块一样,您需要import operator能够使用它.)

  • 我已经尝试在我的代码中使用`L.sort(key = operator.itemgetter(1))`但是我得到一个NameError,没有定义'operator'.我需要进口任何特别的东西吗? (2认同)
  • 做了一点搜索,需要使用`import operator`来使用该功能.如果你把它添加到你的答案我会标记为接受. (2认同)

Sam*_*Nde 8

如果您使用的是python 3.x,则可以sortedmylist上应用该函数 这只是@Sven Marnach上面给出的答案的补充。

# using *sort method*
mylist.sort(lambda x: x[1]) 

# using *sorted function*
sorted(mylist, key = lambda x: x[1]) 
Run Code Online (Sandbox Code Playgroud)

  • @SamuelNde 我向下滚动到这里,因为我不确定该表达式是否与排序相同,所以它对我有帮助。 (3认同)