Python中dict[n]的作用及字符串拆分为单个字符的机制疑问
关于char_freq函数的运行逻辑详解
一、函数核心作用
这个char_freq函数用来统计输入字符串中每个字符的出现次数,最终返回一个字典——键是字符串里的单个字符,值是对应字符的出现次数。比如输入'google',输出为{'g': 2, 'o': 2, 'l': 1, 'e': 1}。
二、逐行拆解代码逻辑
初始化空字典
dict = {}创建一个空字典,专门用来存储后续字符与它们的出现次数映射关系。
遍历字符串拆分出单个字符
for n in s:在Python里,字符串属于可迭代对象,直接用
for循环遍历,会自动把字符串拆成单个字符,依次赋值给变量n。比如遍历'google'时,n会按顺序取到'g'、'o'、'o'、'g'、'l'、'e'——这就是字符串拆分为单个字符作为字典键的原理。统计字符出现次数
keys = dict.keys() if n in keys: dict[n] += 1 else: dict[n] = 1dict.keys()会返回字典当前所有键的视图对象,你之前打印失败可能是直接输出了这个视图,转成列表就能看到具体内容:比如print(list(dict.keys()))。- 当字符
n已经在字典的键中(说明之前出现过),dict[n] += 1的作用是:dict[n]先取出该字符当前的出现次数,+=1把次数加1后再存回字典,更新这个字符的计数。 - 当字符
n不在字典的键中(第一次出现),就给字典新增一个键n,并把对应的值设为1,标记这个字符首次出现。
返回统计结果
return dict循环遍历完所有字符后,把统计好次数的字典返回。
三、实际运行示例
以输入'google'为例,分步看字典的变化:
- 第一次取
n='g':字典为空,执行dict['g']=1,字典变为{'g': 1} - 第二次取
n='o':不在键中,执行dict['o']=1,字典变为{'g': 1, 'o': 1} - 第三次取
n='o':已在键中,执行dict['o'] +=1,值变为2,字典变为{'g': 1, 'o': 2} - 第四次取
n='g':已在键中,执行dict['g'] +=1,值变为2,字典变为{'g': 2, 'o': 2} - 第五次取
n='l':新增键,执行dict['l']=1 - 第六次取
n='e':新增键,执行dict['e']=1
最终返回的字典就是{'g': 2, 'o': 2, 'l': 1, 'e': 1},打印后就会输出这个结果。
内容的提问来源于stack exchange,提问作者john cena
相关产品推荐
相关产品推荐

