我试图将一个句子放在列表上,然后按单词在列表上的出现对列表进行排序,如果有必要,当两个单词出现的次数相同时,请按字母顺序对列表进行排序。我写了这段代码:
def frequencia(texto):
pals = texto.split()
m = sorted(pals,key=pals.count,reverse=True)
return m
问题在于它重复了单词并且不应用字母顺序。在“我是男的,我饿了”这句话上,输出应为['am','I','a','guy','Hungry']
请尝试以下操作:
sentence = 'I am a guy and I am hungry'
words = sentence.split(' ')
sortedwords = sorted(set(words), key=lambda x: (-words.count(x), x.lower()))
# ['am', 'I', 'a', 'and', 'guy', 'hungry']
使用set
以获得独特的词语的输入。然后,tuple
使用优先级最高的出现次数对它们进行排序(计数为负,最频繁出现的值具有最大的负数,并且首先排序),然后按字母顺序排列(lower()
用于使大写和小写字母等效)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句