您可以使用该.split(',')
方法将一条线拆分为单独的部分,然后使用int()
将分数转换为数字。该.sort()
方法对列表进行就地排序,并key
告诉它按什么排序。
scores = []
with open("scores.txt") as f:
for line in f:
name, score = line.split(',')
score = int(score)
scores.append((name, score))
scores.sort(key=lambda s: s[1])
for name, score in scores:
print(name, score)
这将为您提供按排序顺序包含 (name, score) 对的元组列表。如果要在它们之间用逗号打印它们(以保持一致),请将打印更改为print(name, score, sep=', ')
输入文件的读取也可以表示为一(大)行
with open("scores.txt") as f:
scores = [(name, int(score)) for name, score in (line.split(',') for line in f)]
的简要说明key=
:
lambda 函数是匿名函数,即没有名称的函数。当您只需要一个小操作的功能时,您通常会使用这些。 .sort
有一个可选的key
关键字参数,它接受一个函数并使用该函数的返回来对对象进行排序。
所以这lambda
也可以写成
def ret_score(pair):
return pair[1]
然后你可以写 .sort(key=ret_score)
,但是因为我们真的不需要这个函数来做其他事情,所以没有必要声明它。lambda 语法是
lambda <arguments> : <return value>
所以这个 lambda 接受一对,并返回其中的第二个元素。如果您愿意,您可以保存 alambda
并像常规函数一样使用它。
>>> square = lambda x: x**2 # takes x, returns x squared
>>> square(3)
9
>>> square(6)
36