在Python中更新值

时间:2016-10-05 10:27:40

标签: python arrays csv dictionary

你好我正在尝试编写一个程序来读取不同品种的不同动物的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

我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:2)

正如评论所指出的那样,缩进在python中很重要。 elseif的缩进级别不同,因此您会收到错误。

至于计数,+=运算符对此有用,所以你的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