python - 按出现次数和字母顺序对列表进行排序

标签 python sorting

我试图将一个句子放在一个列表中,然后根据列表中单词的出现次数对列表进行排序,如果有必要,当两个单词出现相同的次数时,按字母顺序排序。我写了这段代码:

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/

相关文章:

python - 反转多个集合的字典

python - 如何将 Python RQ Worker 连接到 unix 套接字上的 redis 服务器?

python - 如何使用 Selenium 在下拉列表中选择开始匹配字符串的项目?

c++ - 与模板方法不一致的字符串排序

scala - Spark UDF 对结构体的自定义排序数组

python - App Engine 中的查询 fetch() 和迭代实际上是否相同?

python - python读取多个json

Python - 按 dict`as dict value 的值对字典列表进行排序

scala - 如何使用 Scala 通过比较器对 DataFrame 进行排序?

c++ - 根据对值对多维映射进行排序