你好我正在尝试编写一个程序来读取不同品种的不同动物的CSV文件。不同命名的各种动物可以是同一品种。 (想象一下两只名叫鲍勃和山姆的猫)
品种在一列中,名字在另一列中。
我希望能够检查所有动物并计算每个品种中的动物数量。
到目前为止我的代码是这样的:
dragon = open('dragons.csv')
breed = {}
for line in dragon:
row = line.strip().split(',')
if row[4] in breed.keys():
else:
breed[row[4]] = 1 #The Breed is in the fourth column
我该怎么做?
谢谢!
答案 0 :(得分:2)
正如评论所指出的那样,缩进在python中很重要。 else
与if
的缩进级别不同,因此您会收到错误。
至于计数,+=
运算符对此有用,所以你的if / else块可能是这样的:
if row[4] in breed.keys():
breed[row[4]] += 1
else:
breed[row[4]] = 1
答案 1 :(得分:0)
else
块缩进不足(else
可以与for
配对,但这种情况并不常见,而且代码的逻辑在此处显示错误。
即使你修复了这个问题,你也不能在Python中有一个空块,因为Python需要至少一个缩进的代码行来检测块的缩进级别(以允许它检测块何时结束) 。如果没有为块提供任何主体(立即启动新块,或者在提供主体之前结束外部块),则会出现“预期的缩进块”错误。所以你可以使用pass
(no-op关键字,意思是“这里有东西放在一个没有做任何事情的块中):
if row[4] in breed: # Don't call .keys(); much slower on Py2, a little slower on Py3
pass
else:
breed[row[4]] = 1 #The Breed is in the fourth column
或者只是反转if
测试以控制else
块,这样您就不需要两者:
if row[4] not in breed:
breed[row[4]] = 1 #The Breed is in the fourth column