【问题标题】:Sort list by occurrence and alphabetic order按出现和字母顺序对列表进行排序
【发布时间】:2021-02-22 04:03:58
【问题描述】:

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

def frequencia(texto):
    pals = texto.split()
    m = sorted(pals,key=pals.count,reverse=True)
    return m

问题是它重复单词并且不应用字母顺序。 在“我是个男人,我饿了”这句话上,输出应该是['am','I','a','guy','hungry']

【问题讨论】:

  • 最简单的方法可能是排序两次,第一次按字母顺序,第二次按计数。 Python 排序是稳定的,因此一旦建立了顺序,该顺序将保留在键相等的任何后续排序中。

标签: python sorting


【解决方案1】:

尝试以下方法:

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() 进行大写和小写等价的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2014-02-08
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多