在Python中更新值

2024-04-29 08:52:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我该怎么做?你知道吗

谢谢你!你知道吗


Tags: 文件csv代码in程序数量line名字
2条回答

正如评论所指出的,缩进在python中很重要。elseif的缩进级别不同,因此会出现错误。你知道吗

至于计数,+=运算符对此很有用,因此if/else块可以如下所示:

if row[4] in breed.keys():
    breed[row[4]] += 1
else:
    breed[row[4]] = 1

您的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

相关问题 更多 >