python - 统计列表中对象的出现次数
问题描述
我有一个 .CSV 文件,其中包含来自网站的 LSAT 答案,例如:
"Test","Question","Section","Question Type","Your Answer","Correct Answer"
"PT 62","2: 1","LR","Best Principle for Example","D","D"
"PT 62","2: 2","LR","Strengthen","E","E"
"PT 62","2: 3","LR","Direct Logic Link","B","B"
... repeat 1,000x
我想开始从这个 .CSV 中获取数据,这样我就可以计算出我得到正确的“问题类型”的百分比(或多少)问题。
我已经查阅了 Python 手册、许多类似类型的论坛问题以及许多 .count 答案,但似乎没有一个适合我想要做的事情。
import csv
import itertools
import json
from collections import Counter
file = open('C:/Users/Kenny/Downloads/logicReasoning.csv')
reader = csv.reader(file)
data = list(reader)
masterList = []
questionTypes =[]
for row in data:
masterList.append(row[3])
for x in masterList:
c = Counter(x)
masterList.count(x)
print("total "+x+":", masterList.count(x))
输出
total Justify: 28
total Definition: 28
total Most Similar in Flawed Reasoning: 14
total Resolve Discrepancy: 24
etc, for each question type.
上面的代码打印出一个“问题类型”的列表,加上它在 masterList 中被计算的次数,每次出现问题类型
这样,'Justify 28' 被打印 28 次,每次在 CSV 文件中出现一次。
我只想打印一次“Justify”,它的总数在 CSV 文件中。
然后我将为“问题类型”重新执行相同的代码,以便创建一个新的空列表,并仅在每个实例正确的情况下附加每个实例 - 给出如下:
if row[4] == row[5]:
correctList.append(row[3])
这是否是按问题类型计算问题总数并按问题类型计算正确问题总数的正确方法,以便我可以得出百分比和其他数据?
解决方案
import csv
from collections import Counter
counter = Counter()
with open('lsat.csv') as fp:
for row in csv.reader(fp):
counter[row[3]] += 1
print(counter)
print(list(counter.keys()))
print(counter['Strengthen'])
推荐阅读
- google-sheets - 谷歌表格查询=真
- python - 使用队列实现链表:Python
- git - 如何将“origin/master”添加到本地仓库(可能还有远程仓库),尽管我已经可以推送到远程
- html - 所选选项中的平均答案(按字母值)
- python - 用 numpy 数组/pandas 数据框中最接近的记录替换每条记录
- rust - Rust 宏:单元类型?
- snowflake-cloud-data-platform - 角色创建问题
- mysql - 无状态 bean 内 JPQL 数据中的错误
- asp.net - Asp.Net Core Angular SPA 本地化
- android-studio - Kotlin:在片段中调用 List 和 Grid recycleView