繁体   English   中英

有人可以向我解释我做错了什么吗?

[英]can someone explain to me what I did wrong?

我需要帮助解读这段代码。 我只被允许使用这些特定的代码行,但我需要“解读”它以使其工作。 对我来说,这段代码看起来不错,但我似乎没有让它工作,所以我想知道为什么会这样。

我试图解决的任务如下:

使用 csv 阅读器读入文件,并以树种为键并计算树出现的次数构建字典。 使用“in”运算符查看是否添加了树,如果未添加,则将其设置为 1。打印最后带有计数的字典。

我的代码如下:

from BrowserFile import open as _
import csv
with open("treeinventory.csv", "r", newline='') as f:
    count = {}
    reader = csv.reader(f)
    for yard in reader:
        for tree in yard:
            if tree in count:
                count[tree] = 1
            else: 
                count[tree] = count[tree] + 1
print(count)

如果有人可以帮助我并解释为什么这段代码不能按原样工作,我会很高兴,我正在努力学习,这将非常有帮助!

谢谢你!

通常,我们不会解决 SO 上的“作业”问题。 您还应该尝试提出具体问题。 还要在你的问题上加上更好的标题。 因此,我总是喜欢发布这个来帮助新的提问者。

因为我在这里:你的任务的答案是第 9 行和第 11 行交换了。

这是因为如果键在字典中,逻辑似乎将键tree的字典count设置为1 ,如果键不在字典中,则将1加到存储在count[tree]中的值。 这将导致在语句count[tree] + 1中访问值以执行此加法时抛出 KeyError 异常,因为那里还没有值。

当然,如果没有输入文件,我实际上无法运行代码来验证它,所以请自己尝试一下,如果出现任何具体问题,请更新您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM