Использование регулярных выражений для перебора словаря Python, созданного из таблицы с разделителями табуляции

1

У меня есть следующая таблица (с разделителями табуляции) для студентов. Название, класс, класс в августе, затем оценка в сентябре.

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. заказывайте их в соответствии с самыми высокими оценками, которые они получили в сентябре

Итак, как я могу перебирать словарь через RE, чтобы ответить на эти вопросы?

  • 0
    Но как вы хотите это сделать, по среднему или минимальному значению, или как?
  • 0
    по минимальным или максимальным значениям.
Показать ещё 2 комментария
Теги:

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню