代码之家  ›  专栏  ›  技术社区  ›  Hiddenguy

如何从*.txt文件中查找最小值

  •  -1
  • Hiddenguy  · 技术社区  · 7 年前

    我有 *.txt

    ...
    30 5.882973099631601
    31 6.035463584639685
    32 6.184276444600495
    33 6.3336851616329435
    34 6.492617147379082
    35 6.683538372963013
    36 6.841228384748939
    37 6.999432758805214
    ...
    

    现在我想找到最小值(第二列),但我想用第一列的值显示它。在这种情况下,我想打印这一行,作为一个最小函数,它假设如下所示:

    30 5.882973099631601
    

    我一直试图用那个代码来做这件事,但我被卡住了。

     with open('measurements.txt', 'a') as j:
            j.write(str(r))
            j.write(" ")
            j.write(line[24:])
            j.write('\n')
            j.close()
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Hiddenguy    7 年前
    import csv
    
    # preparing data - converting to array
    rows = []
    with open('sample.txt', mode='r') as infile:
        reader = csv.reader(infile, delimiter=" ")
        for row in reader:  # each row is a list
            rows.append(row)
    
    # lambda function to filter min considering the second column
    minimus = min(rows, key=lambda x: float(x[1]))
    
    # done
    print(minimus)
    
        2
  •  0
  •   Nitin Pawar    7 年前

    要获取具有最小值的行,请执行以下操作:

    min_row = ''  
    min_val = 1000000                   # Considering this value to be the highest
    '''
    Loop for reading rows in source file
    '''
    a, b = row.split(' ')
    b = float(b)
    if b < min_val:
        min_val = b
        min_row = row
    '''
    End of loop
    '''
    

    然后,在新文件中写入“min_row”。