问题描述
我为学生准备了下表(制表符分隔)。 提供姓名,班级,八月份的成绩,然后提供九月份的成绩。
1 Tom Bever 101 20,6 21,3
2 John Hein 102 23,7 22,4
3 Melissa Andrew 401 24,1 25,3
我使用以下代码将其转换为 python 字典:
myfile = open ("students.txt", "r")
d = { }
for line in myfile:
x = line.strip().split("\t")
key, values = x[1], x[2:]
d.setdefault(key, []).extend(values)
print(d)
现在,我需要使用正则表达式来计算
成绩最低的学生姓名
增加的学生姓名
根据他们在 9 月份获得的最高分来排序
那么,如何使用 RE 遍历字典来回答这些问题?
1楼
您可以得到这三个结果,例如:
代码:
with open("students.txt", "r") as f:
d = {y[1]: list(map(float, y[2:])) for y in (
x.strip().split("\t") for x in f)}
print(sorted(d.items(), key=lambda x: min(x[1][1:3]))[0][0])
print([k for k, v in d.items() if v[1] < v[2]])
print([k for k, v in sorted(d.items(), key=lambda x: x[1][2])])
结果:
Tom Bever
['Tom Bever', 'Melissa Andrew']
['Melissa Andrew', 'John Hein', 'Tom Bever']