如何在python中按值对列表进行排序?

时间:2018-11-18 15:55:24

标签: python

我已经用python读取文件并将内容添加到列表中(“ batman,10”,“ Iphone,900”),但不知道如何对其进行分类,因此batman,10首先是因为它的数量较少,而不是因为它的名字。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您想要一个特殊的键来分割字符串,将第二部分转换为整数以传递给sort

the_tuple = ('batman, 10', 'Iphone,900')

result = sorted(the_tuple, key = lambda x : int(x.split(",")[1]))

如果号码相同/名称不同,可以根据需要添加决胜局。在这种情况下,我会避免使用lambda,因为它会使split重复:

the_tuple = ('robin, 10', 'batman, 10', 'Iphone,900')

def sort_function(x):
    name,number = x.split(",")
    return int(number),name

result = sorted(the_tuple, key = sort_function)

结果:

['batman, 10', 'robin, 10', 'Iphone,900']

要按最大数字排序,只需将reverse=True添加到sort(这也可以打破平局决胜局,因此另一种选择是进行return -int(number),name(取反数字)