当前位置: 代码迷 >> python >> 使用正则表达式遍历从制表符分隔表创建的 Python 字典
  详细解决方案

使用正则表达式遍历从制表符分隔表创建的 Python 字典

热度:59   发布时间:2023-07-14 09:51:55.0

我为学生准备了下表(制表符分隔)。 提供姓名,班级,八月份的成绩,然后提供九月份的成绩。

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)

现在,我需要使用正则表达式来计算

  1. 成绩最低的学生姓名

  2. 增加的学生姓名

  3. 根据他们在 9 月份获得的最高分来排序

那么,如何使用 RE 遍历字典来回答这些问题?

您可以得到这三个结果,例如:

代码:

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']