如何计算列表中的每个项目

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (6)

我有csv,它读取事务如下

尿布可乐膏

尿布可乐笔

我想得到每个交易项目的计数如下:

尿布:21可乐: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)

我得到列表是不可避免的错误。

提问于
用户回答回答于

您的代码中存在一些问题/修复

  • 不要使用python内置关键字,例如list列表变量,使用其他名称,例如li
  • 您希望将文件对象传递给csv.reader,而不是文件的名称
  • 您希望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}]
用户回答回答于

添加(可散列)元组,而不是:

        list.append(tuple(row))

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券