如何用for循环重复一个函数

How to repeat a function with a for loop

我打开一个文件并用 csv 读取它,我试图将内容移动到一个函数中,以便它可以在其他程序中以这种格式重复使用:

my-dic = []
with open('customer.csv','r') as input_file:

    csv_reader = csv.reader(input_file,delimiter = ',')

    for line_number, line in enumerate(csv_reader):
    
        if line_number == 0: # skip the header
       
            continue
   
    
        def customer_file(): 
    
            my_dic.append({
        
                'First Name':line[1],
                'Last name':line[2],
                'Age(Years)':int(line[3]),
       })
customer_file()

csv 文件有 100 行,并且!我希望为所有 rows.On 调用函数创建字典,只创建文件的最后一行。我读到这是后期绑定,我必须通过在函数中使用默认参数来强制进行早期绑定。我传递了 line_number = 1,作为函数中的参数,这样它将从 csv 文件的 line_number 1 开始,这也不起作用

我如何实现这一点,以便在调用该函数时,创建的字典将包含 csv 文件的所有行,而不仅仅是最后一行

如果您希望简化您的问题,您可以使用列表理解来获得所需的解决方案,方法是使用 next(csv_reader) 以跳过循环的第一次迭代。

import csv

with open('customer.csv','r') as input_file:
    csv_reader = csv.reader(input_file,delimiter = ',')
    next(csv_reader) # Skip header
    my_dic = [{"First Name": line[0], "Last Name": line[1], "Age(Years)": int(line[2])} for line in csv_reader]

print(my_dic)

我还将提供与您提供的解决方案类似的解决方案,因为我无法假定您对 Python 语言有一定了解。附加到 my_dic 字典并不需要使用函数,因此我已将其删除。您可能需要调整数据所在的索引,因为我正在处理我创建的示例数据。

import csv

my_dic = []
with open('customer.csv','r') as input_file:
    csv_reader = csv.reader(input_file,delimiter = ',')
    next(csv_reader) # Skip header

    for n, line in enumerate(csv_reader):
        print(line)
        my_dic.append({
            'First Name':line[0],
            'Last name':line[1],
            'Age(Years)':int(line[2]),
        })

print(my_dic)

根据评论更新

import csv

def dic_append(line):
    my_dic.append({"First Name": line[0], "Last Name": line[1], "Age(Years)": int(line[2])})

my_dic = []
with open('customer.csv','r') as input_file:
    csv_reader = csv.reader(input_file, delimiter = ',')
    next(csv_reader) # Skip header
    for line in csv_reader:
        dic_append(line)

print(my_dic)