Python统计区分大小写的字符串字符时出现空字典问题
问题分析与修复
你的代码逻辑完全颠倒了:
- 当字符不在字典中时,你仅执行
a=1占位,未将字符添加到字典 - 当字符在字典中时才尝试赋值,但初始字典为空,所有字符首次出现都不会触发else分支;后续重复字符因从未被加入字典,依然无法触发else,最终字典始终为空
修复后的代码
要统计区分大小写的不同字符(每个字符对应值设为1),只需在字符不在字典时将其加入即可:
input_str = "AAaabbBBCC" histogram = dict() for val in input_str: # 直接遍历字符串更简洁,无需通过索引 if val not in histogram: histogram[val] = 1 print(histogram) # 输出: {'A': 1, 'a': 1, 'b': 1, 'B': 1, 'C': 1}
额外优化(可选)
如果只想快速生成目标字典,还可以用字典推导式一行实现:
input_str = "AAaabbBBCC" histogram = {char: 1 for char in set(input_str)} # 注意:集合是无序的,因此字典键的顺序可能与原字符串不同,但内容完全符合要求 print(histogram)
内容的提问来源于stack exchange,提问作者DevZohaib
相关产品推荐
相关产品推荐

