Python 3.x 如何获取列表中每个项目的计数

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

我有一个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)
我获取的列表是不可破坏的错误。

请附加一个(可哈希)元组,而不是:

        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,但我已将你的问题恢复到以前的编辑,以避免其他读者和回答者混淆,您也可以在此处直接询问代码中的任何问题,您不需要更新相同的问题:)