一尘不染

查找文件中的最小浮点,然后在其上打印并在其上面一行

python

我的数据文件如下所示:

3.6-band 
6238
Over
0.5678
Over
0.6874
Over
0.7680
Over
0.7834

我想要做的是挑选出最小的浮点数及其正上方的单词,然后打印这两个值。我不知道我在做什么。我试过了

df=open('filepath')
  for line in df:
    df1=line.split()
    df2=min(df1)

我的尝试至少是试图隔离最小的浮点数。问题在于,这只是给我最后的价值。我认为这是python的一个问题,它不知道从迭代开始,但又…不知道我在做什么。我尝试df2=min(df1.seek(0))没有成功,却说错了no attribute seek。因此,这是到目前为止我尝试过的方法,我仍然不知道如何打印最小浮点数之前的行。意见/帮助/建议将不胜感激,谢谢。

附带说明:此数据文件是具有类似特征的较大文件的示例,但是“ Over”一词也可以是“ Under”,这就是为什么我也需要打印该文件。


阅读 177

收藏
2020-12-20

共1个答案

一尘不染

将项目存储在一个列表列表中,[word,num]然后成对,然后将其应用min到该列表列表中。使用key参数ofmin来指定必须使用哪个项目进行项目比较:

with open('abc') as f:
    lis = [[line.strip(),next(f).strip()] for line in f]
    minn = min(lis, key = lambda x: float(x[1]))
    print "\n".join(minn)
...     
Over
0.5678

这里lis看起来是这样的:

[['3.6-band', '6238'], ['Over', '0.5678'], ['Over', '0.6874'], ['Over', '0.7680'], ['Over', '0.7834']]
2020-12-20