1. ホーム
  2. python

[解決済み] 文字列の長さとアルファベット順で並べ替えるには?

2023-07-12 16:12:09

質問

私は現在pythonの初心者ですが、この質問で行き詰まってしまい、適切な答えを見つけることができないようです。

question:単語のリストが与えられたとき、同じ単語を長さの順(長いものから短いもの)に並べたリストを返す。2番目のソート基準はアルファベット順でなければならない。ヒント:2つの関数を考える必要があります。

今のところこんな感じです。

def bylength(word1,word2):
    return len(word2)-len(word1)

def sortlist(a):
    a.sort(cmp=bylength)
    return a

は長さでソートしますが、このソートに2つ目の基準であるアルファベットの降順で適用する方法が分かりません。

どのように解決するのですか?

このように2つのステップで行うことができます。

the_list.sort() # sorts normally by alphabetical order
the_list.sort(key=len, reverse=True) # sorts by descending length

Pythonのsortは安定しており、長さによるリストのソートは、長さが等しい場合、要素をアルファベット順に残すことを意味します。

このようにすることもできます。

the_list.sort(key=lambda item: (-len(item), item))

一般に cmp は不要で、Python3では削除されました。 key の方がずっと使いやすいです。