[解決済み] 複数の属性でリストを並べ替える?
2022-03-16 04:17:34
質問
リストのリストを持っています。
[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]
もし、ある要素、例えば背の高い/低い要素でソートしたい場合は、次のようにします。
s = sorted(s, key = itemgetter(1))
.
で並べ替えたい場合 両方とも 高さ/短さおよび色については、各要素について1回ずつ、2回ソートを行うことができますが、もっと手っ取り早い方法はないでしょうか?
解決方法は?
キーは、タプルを返す関数にすることができます。
s = sorted(s, key = lambda x: (x[1], x[2]))
または、次のようにしても同じことができます。
itemgetter
(これはより高速で、Pythonの関数呼び出しを避けることができます)。
import operator
s = sorted(s, key = operator.itemgetter(1, 2))
そして、ここで
sort
を使用する代わりに
sorted
を作成し、再割り当てを行います。
s.sort(key = operator.itemgetter(1, 2))
関連
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない