使用字典值和键

时间:2014-05-11 15:32:42

标签: python dictionary

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())

我的代码现在返回最大值,即三,但我希望它返回该值出现的键。当我尝试使用键功能时,出现一个错误,表示它没有采取任何参数。有办法吗?

3 个答案:

答案 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
相关问题