如何按分数对列表进行排序?
How to sort a list by a score?
我如何根据他们的分数对这个列表进行排序?
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' ]
他们的数字就是他们的分数。
您可以使用 sort()
、自定义键函数和一些正则表达式来执行您想要的操作。
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_key, reverse=True )
。
您可以只使用带有简单 key
函数参数的内置 sorted()
函数 — 我认为字符串的格式没有复杂到足以保证使用 re
模块时调用 split()
字符串方法就足够了。
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',
'Jarrod B:10']
我如何根据他们的分数对这个列表进行排序?
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' ]
他们的数字就是他们的分数。
您可以使用 sort()
、自定义键函数和一些正则表达式来执行您想要的操作。
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_key, reverse=True )
。
您可以只使用带有简单 key
函数参数的内置 sorted()
函数 — 我认为字符串的格式没有复杂到足以保证使用 re
模块时调用 split()
字符串方法就足够了。
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',
'Jarrod B:10']