Python 3.x 如何获取列表中每个项目的计数
我有一个csv,它读取如下事务 尿布可乐酱 尿布可乐笔 我希望获得每个交易项目的计数,如下所示: 尿布:1可乐:1浆糊:1 尿布:1可乐:1钢笔:1 我尝试的代码是:Python 3.x 如何获取列表中每个项目的计数,python-3.x,list,Python 3.x,List,我有一个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) C
from collections import Counter
def M():
list=[]
DataCaptured= csv.reader(Datafile,delimiter=" ")
for row in DataCaptured:
list.append(row)
Counter(list)
我获取的列表是不可破坏的错误。请附加一个(可哈希)元组,而不是:
list.append(tuple(row))
代码中的一些问题/已修复
- 不要对列表变量使用python内置关键字,如
,请使用其他名称,如list
li
- 您希望将文件对象传递给,而不是传递文件名
- 您想通过
li将
追加到单个列表中的每一行。追加(行)计数器
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}]
你能解释一下你的产出吗?我在第一笔交易中只看到一块尿布。在输出中,尿布计数为2。你从哪里得到的?这应该是尿布可乐尿布膏的输入吗?尿布可乐尿布膏变成了尿布:2可乐:1膏:1吗?牙签海葵对不起,尿布计数有误,是不是每排都有可能?正如上面提到的,现在你可以数到所有的尿布了。但是我想要每一行和它们的数量我已经更新了答案@KSp请看一看,并让我知道你有任何问题:)代码给出了每个字母的数量,但我想要每个单词。感谢接受@KSp,但我已将你的问题恢复到以前的编辑,以避免其他读者和回答者混淆,您也可以在此处直接询问代码中的任何问题,您不需要更新相同的问题:)