python - 使用正则表达式迭代从制表符分隔表创建的 Python 字典

标签 python

我为学生准备了下表(制表符分隔)。提供了 8 月份的姓名、类(class)、年级以及 9 月份的年级。

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 迭代字典来回答这些问题?

最佳答案

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

代码:

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

关于python - 使用正则表达式迭代从制表符分隔表创建的 Python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52462148/

相关文章:

python - 如何迭代列表列表并更改元素值?

python - Python 中的多元微分

python - 为什么不将 __init__ 分配给父类(super class)的 __init__?

python - 想要在python中返回全零矩阵的行数

python - 跨多个进程python 2.x的线程安全打印

python : Object not created

Python,双重自动枚举defaultdict

python - 选择我希望列中的值具有多个值的行

python - 如何在 Python 中使用 NLTK 仅将具有以下模式 <NN>*<PRP> *"run in"<NN> 的句子分块?

python - 为什么在父类 __init__() 中调用 super() 会改变子类 __init__() 的行为?