Python 带有CSV对象的嵌套for循环出现问题
请帮帮我,伙计们,我有一个CSV文件和一个列表。我想获取CSV文件头的值,这些值与列表中的字符串相同,并在字典中为每个值匹配,然后将它们放回一个大列表中Python 带有CSV对象的嵌套for循环出现问题,python,csv,Python,Csv,请帮帮我,伙计们,我有一个CSV文件和一个列表。我想获取CSV文件头的值,这些值与列表中的字符串相同,并在字典中为每个值匹配,然后将它们放回一个大列表中 csvFile = open("smallDataFile.csv", 'r') csvReader = csv.reader(csvFile) headersList = ['census_tract', 'tow_description', 'longitude'] def read_data(csv_object = csvReade
csvFile = open("smallDataFile.csv", 'r')
csvReader = csv.reader(csvFile)
headersList = ['census_tract', 'tow_description', 'longitude']
def read_data(csv_object = csvReader, headers = headersList):
next(csv_object) # To skip the header line
myList = []
myDict = {}
for header in headers:
for row in csv_object:
myDict[header] = row[headers.index(header)]
myList.append(myDict.copy())
print(myList)
read_data()
CSV文件如下所示:
census_tract,tow_description,longitude
47,ACCIDENT,-78.827175001441
50,STOLEN_VEHICLE,-65.827175001441
我的预期产出是:
[{'census_tract': '47'}, {'tow_description': 'ACCIDENT'}, {'longitude': '-78.827175001441'}, {'census_tract': '50'}, {'tow_description': 'STOLEN_VEHICLE'}, {'longitude': '-65.827175001441'} ]
实际产出如下:
[{'census_tract': '47'}, {'census_tract': '50'}]
我的猜测是,由于某种原因,For循环没有遍历列表中其余的头。您必须交换循环,而且我对上面的代码做了一些修改
for row in csv_object:
for header in headers:
myDict[header] = row[headers.index(header)]
myList.append(myDict.copy()) #this one must be outside the inner loop
输出将如您预期的那样您必须交换循环,并且我稍微修改了上面的代码
for row in csv_object:
for header in headers:
myDict[header] = row[headers.index(header)]
myList.append(myDict.copy()) #this one must be outside the inner loop
输出将如您所期望的那样我更同意上面的一些答案,但它们并没有产生您想要的输出,尽管我更喜欢它们的输出 特定的输出需要这样的内容
import csv
csv_file = open('small.csv', 'r')
csv_reader = csv.reader(csv_file)
headers = ['census_tract', 'tow_description', 'longitude']
def read_data(obj, headers):
next(obj)
my_list = []
for row in obj:
for idx, header in enumerate(headers):
my_dict = {header: row[idx]}
my_list.append(my_dict)
read_data(csv_reader, headers)
我更同意上面的一些答案,但它们并没有产生你想要的输出,即使我更喜欢它们的输出 特定的输出需要这样的内容
import csv
csv_file = open('small.csv', 'r')
csv_reader = csv.reader(csv_file)
headers = ['census_tract', 'tow_description', 'longitude']
def read_data(obj, headers):
next(obj)
my_list = []
for row in obj:
for idx, header in enumerate(headers):
my_dict = {header: row[idx]}
my_list.append(my_dict)
read_data(csv_reader, headers)
哇!就这样???!我花了3个小时思考!非常感谢你!就这样???!我花了3个小时思考!非常感谢你,伙计!非常感谢你,伙计!