2014-10-02 95 views
1

我试图从数据文件中找到最大降雨量。 1340行长文件中[4]元素的降水列。 下面是从文件中的一行数据的一个例子:Python如何在列表中找到最大元素

Date,Day,High T,Low T,Precip,Snow,Snow Depth 
1/1/10,1,41,19,0,0,5 

这里是我试图找到max_precip循环:

for line in fo: 
    max_precip = max(line.split(",")[4]) 

任何帮助或莅临指导,将不胜感激。多谢你们!

+1

你认为numpy读取数据并处理它吗? – usethedeathstar 2014-10-02 07:06:23

回答

5

你需要这适用于所有,和你需要沉淀值转换第一个整数

max_precip = max(fo, key=lambda line: int(line.split(',')[4])) 

这将返回一个包含最大降水全线。我假设你已经删除了标题行。

请注意,您可能想要查看csv module来处理逗号分割。

要获得只是降水最大值和别人不顾一切,用生成器表达式:

max_precip = max(int(line.split(',')[4]) for line in fo) 

演示:

>>> fo = '''\ 
... 1/1/10,1,41,19,0,0,5 
... 1/2/10,1,38,18,2,0,6 
... 1/3/10,1,43,17,1,0,6 
... '''.splitlines() 
>>> max(fo, key=lambda line: int(line.split(',')[4])) 
'1/2/10,1,38,18,2,0,6' 
>>> max(int(line.split(',')[4]) for line in fo) 
2 
+0

当我尝试这个时,它给了我一个语法错误。对不起,我是编程新手。我没有看到代码的哪一部分使循环适用于所有行。 – Hense 2014-10-02 07:13:17

+0

@Hense:我通过'fo',一系列的行。 – 2014-10-02 07:14:13

+0

@Hense:我再次测试,我没有语法错误。也许你之前忘了关闭一个括号? – 2014-10-02 07:15:55

1

我试图找到从最大降雨一个数据文件。

如果这是您想要的,您可能需要预先处理您的数据,然后传递给内置的max函数。

max_precip = max(int(line.split(',')[4]) for line in fo) 
相关问题