Python字典统计元素频率异常:为何无法正确累加字符计数?
问题排查:字符计数无法累加的原因
核心问题出在赋值运算符的写法上:你代码里的=+ 1是错误的,这不是累加操作,而是把对应键的值直接设置为1(=+等价于= 1),所以每次循环都会覆盖之前的计数,最终每个字符的计数都只能是1。
正确的累加操作应该用+= 1,这个运算符会先获取当前键已有的值,加上1后再重新赋值给该键。另外补充一个细节:如果键是第一次出现,直接用+= 1会报错(因为键不存在,无法获取值),所以更稳妥的写法是用字典的get方法,默认值设为0,确保首次出现的字符也能正确计数。
修正后的完整代码如下:
def isAnagram(s, t): if len(s)!= len(t): return False d_1 = {} d_2 = {} for i in range(len(s)): d_1[s[i]] = d_1.get(s[i], 0) + 1 d_2[t[i]] = d_2.get(t[i], 0) + 1 print(d_1) print(d_2) return d_1 == d_2 s = 'aabb' t = 'bbaa' print(isAnagram(s,t))
运行后输出:
{'a': 2, 'b': 2} {'b': 2, 'a': 2} True
内容的提问来源于stack exchange,提问作者Mohamed Elhaddad
相关产品推荐
相关产品推荐

