0

我必须打开一个文本文件并找到字符的频率,然后通过使用字典,我设法得到带有字母和频率以及数字和频率的字典。问题是我必须只打印频率最高的大写字母和频率,频率最高的数字。我尝试了每个 if 语句,但它似乎不起作用。

例如:dictionary = {l:1, b: 6, A:5, 2:1, 5:3} 它打印(“最常用的大写字母是:A 并使用了 5 次。)

4

2 回答 2

1

使用filtermax

>>> d = {'l':1, 'b': 6, 'A':5, '2':1, '5':3}
>>> digit = max(filter(str.isdigit, d), key=d.get)
>>> digit, d[digit]
('5', 3)
>>> upper = max(filter(str.isupper, d), key=d.get)
>>> upper, d[upper]
('A', 5)
于 2013-09-04T05:45:57.257 回答
0

列表推导式或生成器表达式也很有用。

>>> dic = {'l': 1, 'b': 6, 'A': 5, '2':1, 'B': 2, '5': 3}
>>> upper_words = ((word, frequency) for word, frequency in dic.iteritems() if word.isupper())
>>> more_frequently = lambda x1, x2: x2 if x2[1] > x1[1] else x1
>>> reduce(more_frequently, upper_words)
('A', 5)
于 2013-09-04T07:50:50.417 回答