我正在尝试使用excel中的csv文件创建一个字典,该文件使用每列的标题在每列中返回一个字典,在我的代码中以col_list的形式指定。我在提供的excel文件中遇到麻烦,它只返回标题“happy”或“sad”,作为字典而不是列的内容,如下所示:
lambdify = import_module(lambda: sympy.utilities.lambdify)
以下是查看文件的链接:https://docs.google.com/spreadsheets/d/1_qJCvTQfAbk8Df4FrM4vy7GF71v6-dixGiBqx99kmps/edit?usp=sharing
我的代码:
read('words.csv','sad')
{'a': [], 'd': [], 's': []}
(P.S。您可能需要下载fie a csv才能使用它。)
答案 0 :(得分:0)
如果我理解你的问题,你想要创建一个dict,键是你文件的标题。每个键都包含一个列,其中列内容为项目。为此,您的代码可以是这样的:
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文档。 ;)