【问题标题】:Return Max and min not working right [closed]返回最大值和最小值无法正常工作[关闭]
【发布时间】:2018-10-25 06:03:34
【问题描述】:

这是一个文件:

operation1,83123
operation2,72321
operation3,13288
operation2,12312
operation1,45455
operation2,42543
operation5,344
operation4,61321
operation3,71724
operation5,54546
operation1,12298
operation6,38999
operation3,76798
operation4,53983

我的代码;

f = open('ops.log', 'r')   
data = f.readlines()
print max(data), min(data)

操作6,38999 操作1,12298

为什么不能返回正确的值

【问题讨论】:

  • 1) 您的预期输出是什么? 2)正在读取整行,您是否期望逗号右侧的整数的minmax
  • 请不要破坏您的帖子。提交帖子后,您已将内容授权给整个 Stack Overflow 社区 (under the CC BY-SA license)。根据 SE 政策,任何破坏行为都将被撤销。

标签: python python-2.7


【解决方案1】:

假设你想获取逗号后面的值,你可以这样做:

with open('ops.log', 'r') as log_fh:
    data = [int(line.split(',')[1]) for line in log_fh.readlines()]
    print max(data), min(data)

【讨论】:

    【解决方案2】:
    with open(filename, "r") as infile:
        data = [int(i.split(",")[1]) for i in infile.readlines()]   #Split str by comma and get 1st index
    
    print(max(data))
    print(min(data))
    

    输出:

    83123
    344
    

    【讨论】:

      【解决方案3】:

      要获取具有每秒最小和最大列的行,请使用以下命令:

      with open('ops.log', 'r') as f:
          lines = sorted(f.read().split('\n'), key=lambda x: int(x.split(',')[1]))
          minimum, maximum = lines[0], lines[-1]
          print minimum, maximum
      #operation5,344 operation1,83123
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-15
        • 1970-01-01
        • 2018-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多