我有一个看起来像这样的元组列表:
("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)
我要生成的是按元组的第二个值按升序排序的列表。因此L [0]应该("Person 2", 8)
在排序之后。
我怎样才能做到这一点?使用Python 3.2.2如果有帮助。
Answers:
您可以将key
参数用于list.sort()
:
my_list.sort(key=lambda x: x[1])
或者,稍微快一点
my_list.sort(key=operator.itemgetter(1))
(与任何模块一样,您将需要import operator
能够使用它。)
L.sort(key=operator.itemgetter(1))
在代码中使用,但出现NameError,未定义“操作符”。我是否需要导入任何特殊内容?
import operator
使用功能。如果您将其添加到答案中,则将其标记为接受。
如果您使用的是python 3.x,则可以sorted
在mylist上应用该函数。 这只是@Sven Marnach上面给出的答案的补充。
# using *sort method*
mylist.sort(lambda x: x[1])
# using *sorted function*
sorted(mylist, key = lambda x: x[1])
sorted
代替list.sort
。
def findMaxSales(listoftuples):
newlist = []
tuple = ()
for item in listoftuples:
movie = item[0]
value = (item[1])
tuple = value, movie
newlist += [tuple]
newlist.sort()
highest = newlist[-1]
result = highest[1]
return result
movieList = [("Finding Dory", 486), ("Captain America: Civil
War", 408), ("Deadpool", 363), ("Zootopia", 341), ("Rogue One", 529), ("The Secret Life of Pets", 368), ("Batman v Superman", 330), ("Sing", 268), ("Suicide Squad", 325), ("The Jungle Book", 364)]
print(findMaxSales(movieList))
输出->侠盗一号