Joh*_* P. 3 python string python-2.7 python-3.x
我需要编写一个Python函数,它返回字符串中带有最大数字"o"字符的单词.例如,get_most_ooo_word(['aa ao ooo'])应该返回['ooo']并get_most_ooo_word(['aa ao oa aaaooo aooqq aoooq'])应该返回['aaaooo', 'aoooq'].
我试过这个:
def get_most_ooo_word(words):
k=0
for i in range(len(words)-1):
if words[i].count('o')>words[i-1].count('o'):
k=words[i]
return(k)
Run Code Online (Sandbox Code Playgroud)
问题是这个列表只包含1个元素 - 整个字符串 - 我不知道如何在这个列表中分隔单词.
upd:实际上,任务中有一个错误:输入应该是一个字符串,而不是一个列表
Kas*_*mvd 13
这是一种使用的优化方式collections.defaultdict():
In [39]: def get_max_with(lst, char):
...: d = defaultdict(list)
...: for w in lst:
...: d[w.count(char)].append(w)
...: return d[max(d)]
...:
Run Code Online (Sandbox Code Playgroud)
演示:
In [40]: lst
Out[40]: ['aa', 'ao', 'oa', 'aaaooo', 'aooqq', 'aoooq']
In [41]: get_max_with(lst, 'o')
Out[41]: ['aaaooo', 'aoooq']
Run Code Online (Sandbox Code Playgroud)
如果所有项目都没有出现预期的字符,您可以max(d)在访问字典中的相应值之前检查其数量,并返回您想要的任何内容.