Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按分数对列表排序?_Python_Sorting_Python 3.4 - Fatal编程技术网

Python 如何按分数对列表排序?

Python 如何按分数对列表排序?,python,sorting,python-3.4,Python,Sorting,Python 3.4,我如何根据他们的分数对该列表进行排序 class1=['Andy J:6','Nick P:7','Bob G:1','Evie F:5','James M:9','Jarrod B:10','Sean J:7'] 因此,在打印时,它采用格式: ['Jarrod B:10','Andy J:6','James M:9','Nick P:7', 'Sean J:7', 'Evie F:5' , 'Bob G:1' ] 他们的数字就是他们的分数。你可以使用排序(),一个自定义键函数和一点正则表

我如何根据他们的分数对该列表进行排序

class1=['Andy J:6','Nick P:7','Bob G:1','Evie F:5','James M:9','Jarrod B:10','Sean J:7']
因此,在打印时,它采用格式

['Jarrod B:10','Andy J:6','James M:9','Nick P:7',  'Sean J:7', 'Evie F:5' , 'Bob G:1' ]
他们的数字就是他们的分数。

你可以使用
排序()
,一个自定义键函数和一点正则表达式来做你想做的事情

import re   # Regular expressions for string matching

def score_key( x ) :
    patt = ":(\d+)$"   # Matches the score after the colon
    return int( re.search( patt, x ).group( 1 ) )

class1 = ['Andy J:6','Nick P:7','Bob G:1','Evie F:5','James M:9','Jarrod B:10','Sean J:7']
class1.sort( key=score_key )
print( class1 )   # ['Bob G:1', 'Evie F:5', 'Andy J:6', 'Nick P:7', 'Sean J:7', 'James M:9', 'Jarrod B:10']

如果您想获得降序,请使用
class1.sort(key=score\u key,reverse=True)

您可以使用内置的
sorted()
函数带有一个简单的
函数参数-我认为字符串的格式不够复杂,当一次调用
split()
字符串方法就足够时,不能保证使用
re
模块

class1 = ['Andy J:6', 'Nick P:7', 'Bob G:1', 'Evie F:5', 'James M:9',
          'Jarrod B:10','Sean J:7']

print( sorted(class1, key=lambda e: int(e.split(':')[1])) )
输出:

['Bob G:1','Evie F:5','Andy J:6','Nick P:7','Sean J:7','James M:9',',
“贾罗德B:10']

您的输入和输出是相同的-为什么“Sean J”仍然在末尾-应该在“Evie”和“James”之间,当然?An
re
在这里有点过分了
key=lambda L:int(L.rpartition(“:”)[2])
已经足够了