仅打印最频繁的大写字母、数字和python
我必须打开一个文本文件,然后找到字符的频率 通过使用字典,我设法得到了字母和频率以及数字和频率的字典。 问题是我必须只打印使用频率最高的字母和频率最高的数字。 我尝试了每个if语句,但似乎都不起作用 例:字典={l:1,b:6,A:5,2:1,5:3} 它打印(“最常用的大写字母是:A,使用了5次)。使用和:仅打印最频繁的大写字母、数字和python,python,if-statement,dictionary,key,Python,If Statement,Dictionary,Key,我必须打开一个文本文件,然后找到字符的频率 通过使用字典,我设法得到了字母和频率以及数字和频率的字典。 问题是我必须只打印使用频率最高的字母和频率最高的数字。 我尝试了每个if语句,但似乎都不起作用 例:字典={l:1,b:6,A:5,2:1,5:3} 它打印(“最常用的大写字母是:A,使用了5次)。使用和: 列表理解或生成器表达式也很有用 >>> dic = {'l': 1, 'b': 6, 'A': 5, '2':1, 'B': 2, '5': 3} >>>
列表理解或生成器表达式也很有用
>>> 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)
到目前为止,您的代码看起来如何?看起来还可以,但我更希望使用if语句来解决此问题。@user2745401,为什么要使用
if
的解决方案?
>>> 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)