У меня есть следующая таблица (с разделителями табуляции) для студентов. Название, класс, класс в августе, затем оценка в сентябре.
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)
Теперь мне нужно использовать регулярные выражения для вычисления
Имя студента с наименьшей оценкой
Имя студента (ов) с увеличением
заказывайте их в соответствии с самыми высокими оценками, которые они получили в сентябре
Итак, как я могу перебирать словарь через 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']