Python字典技术疑问:空字典键存在判断与值自增逻辑解惑
Python字典代码疑问解答
代码示例
logs = 'rwgojnerjblebwegijerjgnoeabgjnawprijgeqwpowepfiwejgpnegparsgb' logs_count = {} for char in logs: if char == 'j': if char in logs_count: logs_count[char] += 1 else: logs_count[char] = 1 print(logs_count)
问题解答
当logs_count为空字典时,
if char in logs_count为何能判定为True?
这是对代码执行流程的误解:当logs_count为空字典时,第一次遍历到字符'j',char in logs_count的结果是False,此时会进入else分支,将logs_count['j']赋值为1。只有后续再次遇到'j'时,'j'已经存在于字典的键中,char in logs_count才会返回True,执行加1操作。若未给char键赋值,
logs_count[char] += 1如何实现加1操作?
这段代码的逻辑已经避免了“未赋值就执行加1”的情况:只有当char已经是字典的键时,才会执行logs_count[char] +=1;如果char不在字典里,会先通过else分支给该键赋值为1,后续再遇到相同字符时才会触发加1。
若真的在未赋值时强行执行logs_count[char] +=1,Python会直接抛出KeyError,因为字典中不存在对应键,无法完成数值运算。
内容的提问来源于stack exchange,提问作者Ashraf Benmebarek
相关产品推荐
相关产品推荐

