Can';t获取计数器跟踪双值python
因此,我试图计算我的第一列csv文件中每个项目的出现次数。但是结果是不正确的:我有这样一个输出:OrderedDict([('317804067842',1),('4005808283804',1),('3337872414527',1), ..而每个数字在csv文件中显示2或3次 代码如下: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
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