你确定你的第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)在