我有一个csv文件,有三列(ID、县和候选人)。有四个候选人,我需要创建四个列表(每个候选人一个)。每次候选人的名字出现在列表/列中时,我都想将该名字添加到新列表中,然后获取最后一个名字的长度,以查看他们获得了多少选票。当我运行脚本时,它成功地打印了投票总数,但每个候选人列表的长度都打印为“0”,因此我认为他们没有成功地添加到列表中
我对python相当陌生。我相信我的错误在于我如何循环和我的if语句
多谢各位
with open(poll_path, 'r') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
#skip the header
next(csvreader,None)
python/
votes = 0
votes = []
candidate_list = 0
candidate_list = []
khan = 'Khan'
khan = []
kahn = 0
correy = "Correy"
correy = []
correy = 0
li = "Li"
li = []
li = 0
otooley = "O'Tooley"
otooley = []
otooley = 0
for row in csvreader:
votes_cast=str(row[0])
votes.append(votes_cast)
candidates=str(row[2])
candidate_list.append(candidates)
if row[2] == str(khan):
khan.append(candidate_list)
if row[2] == str(correy):
correy.append(candidate_list)
if row[2] == str(li):
li.append(candidate_list)
if row[2] == str(otooley):
otooley.append(candidate_list)
total_votes = len(votes)
print("Election Results")
print("----------------------------")
print("Total Votes: " + str(total_votes))
print("----------------------------")
kahn_votes = len(khan)
print(kahn_votes)
correy_votes = len(correy)
print(correy_votes)
li_votes = len(li)
print(li_votes)
otooley_votes = len(otooley)
print(otooley_votes)
您的代码有很多问题。在中多次指定变量时
您不断丢失早期的值
kahn
是0
,字符串和列表消失了。前两行毫无意义csv
模块只创建字符串,不需要str
一个字符串你知道
khan
是怎样的0
吗?是的,这只是比较第2行和字符串“0”,所以我失败了。因为khan
首先应该是字符串,所以您也不应该强制转换它有一个更好的方法可以做到这一点,使用字典来跟踪候选计数。关于守则的一般说明
open("foo", "r") should be
开放(“foo”)代码
相关问题 更多 >
编程相关推荐