【发布时间】:2020-01-18 02:38:02
【问题描述】:
def countLetter(string):
dic = dict()
for char in string:
dic[char] = (1,dic[char]+1)[char in dic]
print(dic)
countLetter('aabcb')
在这里,我试图计算每个字母出现的次数,但第 4 行引发了错误。 它会引发 KeyError。
【问题讨论】:
-
“连各自的key都存在吗?” 不存在。这就是您收到
KeyError的原因。当您创建dic时,它是空的,并且在您已经尝试访问该分配右侧的dic[char]的值之前,您不会尝试在dic[char]添加任何内容。跨度> -
但是,只有在条件为真时才会评估。并且条件是检查字典中键的存在
-
它是无条件评估的,因为你没有在任何地方写
if。 -
@kaya3:从技术上讲,如果没有
if,您仍然可以进行惰性评估,例如在PEP 308 之前通过旧的(容易出错,但在这种情况下可以使用)方法在两个选项之间进行选择:dic[char] = char in dic and dic[char] + 1 or 1 -
是的,
if不是唯一有条件地求值的语言结构——如果你真的想的话,你甚至可以写while condition: do_thing(); break。但是代码没有使用任何这样的结构,这就是重点。
标签: python-3.x keyerror