如何在将 csv 文件读入字典时跳过第一列 python

How to skip the first column when reading a csv file to a dictionary python

我是 python 的新手。我正在尝试将 csv 文件读入字典,但它两次返回带有键的字典,第一次作为关键字,第二次作为列之一。有没有人知道如何删除已经被认为是关键的第一列?

这是我的代码:

def read_dict(filename, key_column_index):
    """Read the contents of a CSV file into a compound
    dictionary and return the dictionary.

    Parameters
        filename: the name of the CSV file to read.
        key_column_index: the index of the column
            to use as the keys in the dictionary.
    Return: a compound dictionary that contains
        the contents of the CSV file.
    """
    
    # Create an empty dictionary that will store the data from the CSV file.
    csv_dict = {}

    with open(filename, "rt") as csv_file:

        # Use the csv module to create a reader object that will read from the opened CSV file.
        reader = csv.reader(csv_file)

        # Skip the first row of data as it contains the header of each column
        next(reader)

        # Read the rows in the CSV file one row at a time.
        # The reader object returns each row as a list.
        for row_list in reader:

            # From the current row, retrieve the data from the column that contains the key.
            key = row_list[key_column_index]

            # Store the data from the current row into the dictionary.
            csv_dict[key] = row_list

    return csv_dict

您可以使用 this 功能

import csv
f = open("samp.csv","r")
reader = csv.reader(f)
d = {}
d_reader = csv.DictReader(f)
for l in (d_reader):
    print(l)

返回的字典是json条记录的形式。以列名为键的字典列表

或者,如果您希望整个列作为每个列名下的列表作为键,您也可以这样做

import csv
f = open("samp.csv","r")
reader = csv.reader(f)
d = {}
for ri,r in enumerate(reader):
    if ri == 0:
        column_names = list(r)
    if ri > 0:
        for ci, c in enumerate(r):
            curr_cname = column_names[ci]
            if curr_cname not in d:
                d[curr_cname] = []
            d[curr_cname].append(c)
print(d) # d = {'a': ['1', '5'], 'b': ['2', '6'], 'c': ['3', '7']}
f.close()

这将使用列表切片跳过 key_column_index 处的列:

key = row_list[key_column_index]
csv_dict[key] = row_list[:key_column_index] + row_list[key_column_index + 1:]

我的代码如下所示:

def read_dict(filename, key_column_index):
"""Read the contents of a CSV file into a compound
dictionary and return the dictionary.

Parameters
    filename: the name of the CSV file to read.
    key_column_index: the index of the column
        to use as the keys in the dictionary.
Return: a compound dictionary that contains
    the contents of the CSV file.
"""

# Create an empty dictionary that will store the data from the CSV file.
csv_dict = {}

with open(filename, "rt") as csv_file:

    # Use the csv module to create a reader object that will read from the 
    opened CSV file.
    reader = csv.reader(csv_file)

    # Skip the first row of data as it contains the header of each column
    next(reader)

    # Read the rows in the CSV file one row at a time.
    # The reader object returns each row as a list.
    for row_list in reader:

        # From the current row, retrieve the data from the column that contains 
        the key.
        key = row_list[key_column_index]          
        

        # Store the data from the current row into the dictionary.
        csv_dict[key] = row_list[:key_column_index] + row_list[key_column_index + 1:]

return csv_dict