我有csv,它在其中读取事务,如下所示
尿布可乐糊
尿布可乐笔
我想按以下方式获取每个交易项目的数量:
尿布:1可乐:1粘贴:1
尿布:1可乐:1笔:1
我尝试的代码是:
from collections import Counter
def M():
list=[]
DataCaptured= csv.reader(Datafile,delimiter=" ")
for row in DataCaptured:
list.append(row)
Counter(list)
我得到的列表是无法散列的错误。
答案 0 :(得分:0)
附加(可哈希)元组,相反:
list.append(tuple(row))
答案 1 :(得分:0)
代码中的某些问题/已解决
list
之类的python内置关键字用于列表变量,而应使用其他名称,例如li
Counter
在单个列表的每一行上附加li.append(row)
修复此问题后,代码将更改为
from collections import Counter
import csv
def M():
li=[]
#Open the csv file
with open('file.txt') as fp:
DataCaptured = csv.reader(fp,delimiter=' ')
#Iterate throught each word in csv and add it's counter to the row
for row in DataCaptured:
li.append(dict(Counter(row)))
#Return the list of counters
return li
print(M())
输出将为
[{'Diaper': 1, 'Cola': 1, 'Paste': 1},
{'Diaper': 1, 'Cola': 1, 'Pen': 1}]