我有一个代码片段,它查找给定长度k的最频繁字符串
def FrequentWords(Text, k):
patternDict = {}
for i in range((len(Text)-k+1)):
if Text[i:i+k] in patternDict:
patternDict[Text[i:i+k]] += 1
else:
patternDict[Text[i:i+k]] = 1
代码可以工作,但是,我不明白为什么键和值开始被添加到最初的空字典patternDict中。我知道patternDict[Text[i:i+k]] = x
查找键Text[i:i+k]
并将x赋给相应的值,但对我来说,这行并不表示必须向字典中添加任何元素。你知道吗
为了澄清,我理解代码的作用,它只是行的“添加操作”
patternDict[Text[i:i+k]] = x
我不明白的是,因为对我来说,这些行中的任何一行都在说“查找这个键并查看它各自的值”
第一行检查键是否已经存在,如果它确实增加值,如果不存在,则执行else语句,将新键添加到dict并将值设置为1,为什么第一行增加是因为您要计算在字符串中看到子字符串/键的次数:
更好的方法是使用collections.defaultdict:
相关问题 更多 >
编程相关推荐