[解決済み] カウンターを値で並べ替えるには?- パイソン
2022-02-02 19:52:45
質問
反転したリスト内包を行う以外に、カウンターを値でソートするpythonicな方法はありますか?もしそうなら、それはこれよりも高速です。
>>> from collections import Counter
>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> sorted(x)
['a', 'b', 'c']
>>> sorted(x.items())
[('a', 5), ('b', 3), ('c', 7)]
>>> [(l,k) for k,l in sorted([(j,i) for i,j in x.items()])]
[('b', 3), ('a', 5), ('c', 7)]
>>> [(l,k) for k,l in sorted([(j,i) for i,j in x.items()], reverse=True)]
[('c', 7), ('a', 5), ('b', 3)
解決方法は?
を使用します。
Counter.most_common()
メソッド
を実行すると、項目がソートされます。
あなたのために
:
>>> from collections import Counter
>>> x = Counter({'a':5, 'b':3, 'c':7})
>>> x.most_common()
[('c', 7), ('a', 5), ('b', 3)]
すべての値ではなく、上位N個の値を要求した場合、その値は
heapq
が使われます。
>>> x.most_common(1)
[('c', 7)]
カウンタ以外では、ソートは常に
key
関数を使用します。
.sort()
と
sorted()
は両方とも callable を取り、入力配列をソートする値を指定します。
sorted(x, key=x.get, reverse=True)
と同じ並べ方をします。
x.most_common()
のように、キーだけを返します。
>>> sorted(x, key=x.get, reverse=True)
['c', 'a', 'b']
または、指定された値のみでソートすることができます。
(key, value)
のペアを作成します。
>>> sorted(x.items(), key=lambda pair: pair[1], reverse=True)
[('c', 7), ('a', 5), ('b', 3)]
をご覧ください。 PythonソートHowto をご覧ください。
関連
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] リストを均等な大きさのチャンクに分割するにはどうしたらいいですか?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] 整数の配列を正しくソートする方法
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
python string splicing.join()とsplitting.split()の説明
-
PicgoのイメージベッドツールをPythonで実装する
-
PythonはWordの読み書きの変更操作を実装している
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み] リスト項目の出現回数を数えるにはどうしたらいいですか?