使用python中的每列的CSV返回Excel中的字典



我正在尝试通过使用Excel中的CSV文件来创建字典,该文件通过使用每列的标题返回每列中的字典,并在我的代码中指定为col_list。我在提供的Excel文件中遇到困难,它只会返回标题,"快乐"或" sad"作为词典,而不是列的内容,例如:

read('words.csv','sad')
{'a': [], 'd': [], 's': []}

这是要查看文件的链接:https://docs.google.com/spreadsheets/d/1_qjcvtqfabk8df4frm4frm4vy7gf71v6-dixgibqx999999kmps/Editit?usp=sharing

sharing

我的代码:

import csv
def read(filename, col_list):
'''This function expects the name of a CSV file and a list of strings 
representing a subset of the headers of the columns in the file, and
returns a dictionary of the data in those columns'''
    with open('words.csv', 'r') as f:
        reader= csv.DictReader(f)
        dict1={}
        for col in col_list:
            dict1[col]=[]
        for row in reader:
            return dict1

(p.s。您可能需要下载fie a csv才能使用它。)

如果我理解您的问题,您想创建一个键,即键是文件的标题。并且每个键都包含一个将列内容作为项目的列表。为此,您的代码可以这样:

import csv

def read_csv(filename, col_list):
    """This function expects the name of a CSV file and a list of strings
    representing a subset of the headers of the columns in the file, and
    returns a dictionary of the data in those columns, as described below."""
    with open(filename, 'r') as f:
        # Better covert reader to a list (items represent every row)
        reader = list(csv.DictReader(f))
        dict1 = {}
        for col in col_list:
            dict1[col] = []
            # Going in every row of the file
            for row in reader:
                # Append to the list the row item of this key
                dict1[col].append(row[col])
    return dict1

print(read_csv(filename='words.csv', col_list=['happy', 'sad']))

此代码的输出是:

{'sad': ['abominable', 'abominably', 'abominate', 'abomination', 'abort', 'aborted', 'aborts', 'abrade', 'abrasive', 'abrupt', 'abruptly', 'abscond', 'absence', 'absent-minded', 'absentee', 'absurd', 'absurdity', 'absurdly', 'absurdness', 'abuse', 'abused', 'abuses', 'abusive', 'abysmal', 'abysmally', 'abyss', 'accidental', 'accost', 'accursed', 'accusation', 'accusations', 'accuse', 'accuses', 'accusing', 'accusingly', 'acerbate', 'acerbic', 'acerbically', 'ache', 'ached', 'aches', 'aching', 'acrid', 'acridly', 'acridness', 'acrimonious', 'acrimoniously', 'acrimony', 'adamant', 'adamantly', 'addict', 'addicted', 'addicting', 'addicts', 'admonish', 'admonisher', 'admonishingly', 'admonishment', '', 'OF', 'WELL-BEING', 'ASSURANCE', 'A', 'REASON', 'FOR', 'BEING', 'ACARONAR', 'ACCOMMODATIVE', 'ALTITUDINARIAN', 'AMAZING', 'WORDS', 'AMIABLY', 'ACCOLADE', 'ACUMEN', 'ADJUSTABLE', 'ADMIRER', 'ADMIRING', 'ADMIRINGLY', 'ADORER', 'ADROIT', 'ADROITLY', 'ADULATED', 'ADULATION', 'ADULATORY', 'ADVENTURESOME', 'ADVOCATED', 'AMBITIOUS', 'AMBITIOUSLY', 'AMELIORATE', 'AMENITY', 'AMITY', 'AMPLY', 'AMUSE', 'AMUSINGLY', 'APOTHEOSIS', 'ASSUME', 'YOUR', 'OWN', 'VALUE', 'ASTONISHINGLY', 'ASTONISHMENT', 'ATTRIBUTIONAL', 'STYLE', 'QUESTIONNAIRE', '(ASQ)', 'AUTHENTIC', 'HAPPINESS', 'AWAKEN', 'AWAKENING', ''], 'happy': ['ADORED', 'ADORING', 'ADORINGLY', 'ADVANCED', 'ADVANTAGEOUS', 'ADVANTAGEOUSLY', 'ADVANTAGES', 'AFFABILITY', 'AFFABLY', 'AFFINITY', 'AFFIRMATION', 'AFFIRMATIVE', 'AFFLUENCE', 'AFFLUENT', 'AFFORD', 'AFFORDABLE', 'AFFORDABLY', 'AGILE', 'AGILELY', 'AGREEABLENESS', 'AGREEABLY', 'ALIGNED', 'ALL', 'IS', 'WELL', 'ALLURING', 'ALLURINGLY', 'ALTERNATIVE', 'HEALING', 'ALTRUISTICALLY', 'AMAZE', 'AMAZEMENT', 'AMAZES', 'AMAZINGLY', 'AMIABILITY', 'AMICABILITY', 'AMICABLE', 'AMICABLY', 'AMUSING', 'APPEAL', 'APPEALING', 'APPLAUD', 'APPRECIABLE', 'APPRECIATED', 'APPRECIATES', 'APPRECIATION', 'OF', 'BEAUTY', 'APPRECIATIVELY', 'APPROPRIATE', 'APPROVAL', 'APPROVE', 'ARDOR', 'ART', 'OF', 'APPRECIATION', 'ART', 'OF', 'STILLNESS', 'ART', 'OF', 'WELL-BEING', 'ASSURANCE', 'A', 'REASON', 'FOR', 'BEING', 'ACARONAR', 'ACCOMMODATIVE', 'ALTITUDINARIAN', 'AMAZING', 'WORDS', 'AMIABLY', 'ACCOLADE', 'ACUMEN', 'ADJUSTABLE', 'ADMIRER', 'ADMIRING', 'ADMIRINGLY', 'ADORER', 'ADROIT', 'ADROITLY', 'ADULATED', 'ADULATION', 'ADULATORY', 'ADVENTURESOME', 'ADVOCATED', 'AMBITIOUS', 'AMBITIOUSLY', 'AMELIORATE', 'AMENITY', 'AMITY', 'AMPLY', 'AMUSE', 'AMUSINGLY', 'APOTHEOSIS', 'ASSUME', 'YOUR', 'OWN', 'VALUE', 'ASTONISHINGLY', 'ASTONISHMENT', 'ATTRIBUTIONAL', 'STYLE', 'QUESTIONNAIRE', '(ASQ)', 'AUTHENTIC', 'HAPPINESS', 'AWAKEN', 'AWAKENING']}

我希望它有帮助。另外,看看Readdict文档。;)

最新更新