Can';t获取计数器跟踪双值python

Can';t获取计数器跟踪双值python,python,csv,Python,Csv,因此,我试图计算我的第一列csv文件中每个项目的出现次数。但是结果是不正确的:我有这样一个输出:OrderedDict([('317804067842',1),('4005808283804',1),('3337872414527',1), ..而每个数字在csv文件中显示2或3次 代码如下: import csv from collections import Counter, OrderedDict #the purpose of this small script is checking

因此,我试图计算我的第一列csv文件中每个项目的出现次数。但是结果是不正确的:我有这样一个输出:OrderedDict([('317804067842',1),('4005808283804',1),('3337872414527',1), ..而每个数字在csv文件中显示2或3次

代码如下:

import csv
from collections import Counter, OrderedDict

#the purpose of this small script is checking if values are double in EAN 
list result

eans_to_count = set()
with open("example.csv", "r") as new_data:
reader = csv.reader(new_data, delimiter=',', quotechar='"')
for row in reader:
    if row:
        ean = row[0]
        eans_to_count.add(ean)

x = Counter(eans_to_count)
y = OrderedDict(x.most_common())
print(y)

你知道我错在哪里吗?因为我确信结果是不正确的。在你计算重复值之前,
集合
会丢弃重复值。使用
计数器
的正常方法是直接向其添加:


集合
在计算重复值之前会丢弃重复值。使用
计数器
的正常方法是直接添加到计数器中:


您正在将
ean
值存储在
集中,因此每个值中始终只有一个。请尝试
eans\u to\u count
=list()现在效果更好!谢谢:)您正在将
ean
值存储在
集中,因此每个值中始终只有一个。请尝试
eans\u to\u count
=list()现在效果更好了!谢谢:)谢谢你的好做法:)我还有一个问题。现在我只是检查一下EAN是否多次出现在列表中。输出结果是:876543:49877668:3,等等。但是如果我想得到链接到每个EAN的信息,而不是“4”或“3”,那么:“876543:[苹果、香蕉、草莓、菠萝]可能吗?@Araxide:您使用
dict.setdefault(…,[])。追加
集合。defaultdict(list)[…].append
,这是一种非常常见的模式。感谢您的良好实践:)我还有一个问题。现在我只需检查EAN是否多次出现在列表中。输出类似于:876543:4、987668:3等。但是如果我想获得链接到每个EAN的信息,而不是“4”或“3”,那么:“876543:[苹果、香蕉、草莓、菠萝]可能吗?@Araxide:你可以使用
dict.setdefault(…,[])。append
collections.defaultdict(list)[…]。append
,这是一种非常常见的模式。
eans_to_count = Counter()
with open("example.csv", "r") as new_data:
    reader = csv.reader(new_data, delimiter=',', quotechar='"')
    for row in reader:
        if row:
            ean = row[0]
            eans_to_count[ean] += 1