我正在尝试使用以下列从CSV的评论表中创建多个词典:
我需要为每一行创建一个字典(希望使用循环,所以我不必手动创建它们),其中字典键是:
然而,我无法想出一个快速的方法来做到这一点。我尝试使用以下代码创建字典列表:
# Import libraries
import csv
import json
import pprint
# Open file
reader = csv.DictReader(open('Comments.csv', 'rU'))
# Create list of dictionaries
dict_list = []
for line in reader:
dict_list.append(line)
pprint.pprint(dict_list)
但是,现在我不知道如何访问字典或键值对是否正确匹配,因为在下图中:
有没有办法只为每行创建一个字典而不是字典列表?
注意:我确实查看过this个问题,但这并没有真正帮助。
答案 0 :(得分:1)
由于您没有给出可重现的示例,使用示例DataFrame,我已经为您创建了一个
import pandas as pd
df = pd.DataFrame([[1, "Contractor", "Please post"], [2, "Developer", "a reproducible example"]])
df.columns = ['ID', 'ReviewType', 'Comment']
在您的计算机中,键入:
,而不是这样做df = pd.read_csv(file_path)
将csv文件作为pandas DataFrame读取。
现在我将创建一个名为dictList
的列表,该列表最初将为空,我将使用DataFrame df
dictList = []
#Iterate over each row in df
for i in df.index:
#Creating an empty dictionary for each row
rowDict = {}
#Populating it
rowDict['ID'] = df.at[i, 'ID']
rowDict['ReviewType'] = df.at[i, 'ReviewType']
rowDict['Comment'] = df.at[i, 'Comment']
#Once I'm done populating it, I will append it to the list
dictList.append(rowDict)
#Go to the next row and repeat.
现在迭代我们为我的例子创建的词典列表
for i in dictList:
print(i)
我们得到了
{'ID': 1, 'ReviewType': 'Contractor', 'Comment': 'Please post'}
{'ID': 2, 'ReviewType': 'Developer', 'Comment': 'a reproducible example'}
答案 1 :(得分:1)
你走了。我将评论放入数组
# Import libraries
import csv
import json
import pprint
# Open file
def readPerfReviewCSVToDict(csvPath):
reader = csv.DictReader(open(csvPath, 'rU'))
perfReviewsDictionary = []
for line in reader:
perfReviewsDictionary.append(line)
perfReviewsDictionaryWithCommentsSplit = []
for item in perfReviewsDictionary:
itemId = item["id"]
itemType = item["type"]
itemComment = item["comments"]
itemCommentDictionary = []
itemCommentDictionary = itemComment.split()
perfReviewsDictionaryWithCommentsSplit.append({'id':itemId, 'type':itemType, 'comments':itemCommentDictionary})
return perfReviewsDictionaryWithCommentsSplit
dict_list = readPerfReviewCSVToDict("test.csv")
pprint.pprint(dict_list)
输出结果为:
[{'comments': ['test', 'ape', 'dog'], 'id': '1', 'type': 'Test'},
{'comments': ['dog'], 'id': '2', 'type': 'Test'}]
答案 2 :(得分:0)
你想要这个吗?
DICT = {}
for line in reader:
DICT[line['ID']] = line