Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有CSV对象的嵌套for循环出现问题_Python_Csv - Fatal编程技术网

Python 带有CSV对象的嵌套for循环出现问题

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

请帮帮我,伙计们,我有一个CSV文件和一个列表。我想获取CSV文件头的值,这些值与列表中的字符串相同,并在字典中为每个值匹配,然后将它们放回一个大列表中

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个小时思考!非常感谢你,伙计!非常感谢你,伙计!