def wordtally():
test1 = "One day, Jimmy Jimmy Jimmy."
no_punct = test1.strip(".")
split = no_punct.split()
subscript = 0
D = {}
split = no_punct.split()
for n in split:
if n in D.keys():
D[n] += 1
else:
D[n] = 1
return max(D.values())
我的代码现在返回最大值,即三,但我希望它返回该值出现的键。当我尝试使用键功能时,出现一个错误,表示它没有采取任何参数。有办法吗?
答案 0 :(得分:1)
将函数的最后一行修改为:
return max(D.keys(), key=D.get) # or just D instead of D.keys()
它将返回Jimmy
。
max
函数会为dict
中的每个密钥调用get
D
方法,以获取相应的值,然后返回找到的最大值的密钥。< / p>
我希望你知道collections.Counter
。它可以缩短你的功能:
from collections import Counter
def wordtally():
test1 = "One day, Jimmy Jimmy Jimmy."
no_punct = test1.strip(".")
return Counter(no_punct.split()).most_common()[0][0]
print(wordtally()) # Jimmy
答案 1 :(得分:0)
也许是一个简单的方法让你的问题得到列表中最常见的元素:
def find_most_common(inStr,inSeperator):
alist = inStr.strip(inSeperator).split()
return max(set(alist), key=alist.count)
print find_most_commmon("One day, Jimmy Jimmy Jimmy.",".")
答案 2 :(得分:0)
除非这是一项练习,否则更容易使用collections.Counter
进行计数,并re.findall
对单词进行基本标记:
from collections import Counter
import re
text = 'One day, Jimmy Jimmy Jimmy.'
words = re.findall('\w+', text)
# ['One', 'day', 'Jimmy', 'Jimmy', 'Jimmy']
word_counts = Counter(words)
# Counter({'Jimmy': 3, 'day': 1, 'One': 1})
most_common, = word_counts.most_common(1)
# ('Jimmy', 3)
print most_common[0]
# Jimmy