fmtText = "Lorem ipsum dolor! diam amet, consetetur Lorem magna. sed diam nonumy eirmod tempor. diam et labore? et diam magna. et diam amet."
freqMap = {}
wordList = fmtText.split(' ')
for word in set(wordList):
freqMap.update({word:fmtText.count(word)})
print(freqMap)
{'amet.': 1, 'nonumy': 1, 'consetetur': 1, 'magna.': 2, 'diam': 5, 'sed': 1, 'labore?': 1, 'dolor!' : 1, 'tempor.': 1, 'Lorem': 2, 'eirmod': 1, 'amet,': 1, 'ipsum': 1, 'et': 7}
fmtText = "Lorem ipsum dolor! diam amet, consetetur Lorem magna. sed diam nonumy eirmod tempor. diam et labore? et diam magna. et diam amet."
# split text into words
wordList = fmtText.split(' ')
# Create dictionary
freqMap = {}
for word in set(wordList): # use set to remove duplicates in list
freqMap[word] = wordList.count(word)
print(freqMap)
{'amet.': 1, 'nonumy': 1, 'consetetur': 1, 'magna.': 2, 'diam': 5, 'sed': 1, 'labore?': 1, 'dolor!' : 1, 'tempor.': 1, 'Lorem': 2, 'eirmod': 1, 'amet,': 1, 'ipsum': 1, 'et': 3}
我不明白为什么 et = 3,在第一种情况下,在第二种情况下 et = 7(第二个是整个文本中 et 的数量,在第一个 et 单词中)
问题不在于
dict.update,而在于所使用的计数方法。在第一种情况下,您不是按单词列表计数,而是按字符串(
fmtText.count(word)而不是wordList.count(word))计数,因此“et”被简单地视为字母组合,包括作为其他单词的一部分,例如,在单词 am et , cons etet ur 等一般来说,使用 Counter 来计算相同的对象很方便: