我试图将一个句子放在一个列表中,然后根据列表中单词的出现次数对列表进行排序,如果有必要,当两个单词出现相同的次数时,按字母顺序排序。我写了这段代码:
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()
使大写和小写等效)。
关于python - 按出现次数和字母顺序对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66306443/