关于统计字母频率代码中字典keys()方法作用的技术疑问
字典统计字母频率代码疑问解答
我在学习一段用字典统计字母频率的代码时,对其中keys = letter_frequency.keys()这一行的作用及后续逻辑关联存在疑惑,代码及对其余部分的理解如下:
word_list=['abc','az','ed'] def count_letter_frequency(word_list): #函数名称与输入 letter_frequency={} #空字典 for word in word_list: #遍历word_list中的每个元素,第一个为'abc' for letter in word: #从'abc'中逐个遍历字母:'a'、'b'、'c' keys=letter_frequency.keys() #此处存疑,我理解为将空字典letter_frequency的键赋值给变量keys,后续通过if/else统计 if letter in keys: #疑惑:初始字典为空,字母怎么会在keys中? letter_frequency[letter]+=1 else: letter_frequency[letter]=1 return letter_frequency
疑问解答
keys = letter_frequency.keys()的具体作用
这行代码是把当前letter_frequency字典里的所有键(也就是已经统计过的字母)提取出来,赋值给keys变量,本质是把已统计字母的集合临时存起来,方便后续判断当前字母是否已经被统计过。
不过在Python里这行属于冗余代码——直接写if letter in letter_frequency:就能达到同样效果,因为判断元素是否在字典中,默认就是检查它是否是字典的键。
- 初始字典为空时的判断逻辑
第一次遍历字母(比如第一个字母'a'),此时letter_frequency是空字典,keys自然也是空集合,if letter in keys条件不成立,会进入else分支,把letter_frequency['a']的值设为1。
当后续再次遇到'a'时,letter_frequency里已经有'a'这个键了,keys中也会包含'a',这时条件成立,就会执行letter_frequency[letter] +=1,实现计数加1。
内容的提问来源于stack exchange,提问作者Jason Giust
相关产品推荐
相关产品推荐

