python nameerror是逻辑错误吗_使用python分析文件时出现逻辑错误:KeyError:'O'

本文探讨了一个Python脚本中关于字典操作的问题,特别是如何处理缺失键'O'引发的错误。作者分享了使用字典和集合进行计数的方法,并对比了不同计数方式的性能。核心内容涉及字符串处理、字典结构和代码优化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你确定你的第7行是d['O']吗?在

错误消息提示它读作d['C']

问题是,如果行不包含'O'字符,那么'O'将不在d中,这会导致错误。在

第二次定义d时将创建一个不包含“O”键的新字典。在def parse(string):

d = {'G' : 0, 'O' : 0, 'D' : 0}

d = {s: string.count(s) for s in string if s in d }

try:

d['O'] /= 2

except KeyError:

return 0

return min(d.values())

file = open("test1.py").read().split('\n')

print( "\n".join( [("Case #%d: %d" % (i, parse(file[i]))) for i in range(1, len(file))]))

(您可能会发现d={s:字符串.count(s) 对于d}中的s)

(我也喜欢使用集合。计数器. 但是,如果您对速度感兴趣,那么我的计时测量结果显示,对于一个1000万个字符串,生成Counter对象需要3秒,但是每次调用只需要0.012秒字符串.count)在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值