我正在尝试使用 Python 的 csv 文件中为具有最小值的行提取所有相关信息。以下是我的代码来查找相关信息。当我对它进行适当编码时,最小值为 12。但是当我输入函数并将处理最少的函数以在csv文件中查找和记录其他数据时。无法更新该值。更新行[9]的值缺少什么?
CVS 文件包含一列数字,我需要找到最小值。单独的编码可以很好地找到 12 的最小值,我把它作为测试做了。但是在我分配一个函数并使用相同的方法来找到最小值后,它不起作用。由于我需要在代码的其他部分使用最小值,因此最好将其放入函数中并使其工作。所以我想知道如何转移函数也应该找到最小值。提前谢谢你。
#put finding minimum in to a function and will use the returned minimum
#to pull out other information
def findMin():
minMile = 100
if num<minMile:
minMile=num
return minMile
def main():
fileIn = open("epaVehicleData2008.csv", "r")
fileIn.readline()
for line in fileIn:
line = line.split(",")
num=int(line[9])
findmin(line)
minMile=int(line[9])
print(minMile)
main()
#separate code for finding the minimum as a test
fileIn = open("epaVehicleData2008.csv", "r")
fileIn.readline()
minMile = 100
for line in fileIn:
line = line.split(",")
num = int(line[9])
if num < minMile:
minMile = num
print(minMile)
这可以使用Python的CSV库来完成,以帮助读取每一行并将其自动拆分为列表:
import csv
def findMin(filename):
with open(filename, 'r', newline='') as f_input:
csv_input = csv.reader(f_input)
return min(csv_input, key=lambda x: int(x[9]))[9]
print('Min mile', findMin('epaVehicleData2008.csv'))
内置的min()
函数可用于确定最小行。它需要一个key
参数,该参数告诉它要与输入的哪一部分进行比较,在本例中为第 9 个元素。
每次调用findMin()
时,minMile
的值将始终100
。在设计中,您需要使变量成为全局变量,而不是函数的局部变量。也许更好的方法是向函数传递文件名,让它一次性读取和计算最小值并返回该值。
lambda
只是一个内联编写的函数,不需要单独的def
。在这种情况下,它将x
作为一行,并以整数形式返回第九个值。