質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

930閲覧

lambda関数keyにしたlistのsortについて

B6J

総合スコア4

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/25 03:56

python lambda関数をkeyにしたsortについて

lambda関数を用いたsortを学んでいます。
list_abcdef = [["a", 0], ["b", 2], ["c", 1], ["d", 3], ["e", 5], ["f", 4]]
list_abcdef.sort(key=lambda x: x[1])

のようにすると、リストの要素の2つ目を基準にsortできることを知りました。
また、以下のようにするとリストの中を好きな順番に並び変えられると知り便利だと思いました。
が、lambda関数で何が起こっているのか疑問に思っています。
上のlist_abcdefの例だと、xにlistの要素(["a",0]など)が入って、それの[1]が返されていると想像できますが、下記のコードだとxに何が入っているのかわかりませんでした。
ご教授よろしくお願いいたします。

該当のソースコード

python

1d = {"A": 0, "B": 2, "C": 1, "D": 3, "E":5, "F":4} 2list_ABCDEF=["A", "B", "C", "D", "E", "F"] * 5 3list_ABCDEF.sort(key=lambda x: d[x])

['A', 'A', 'A', 'A', 'A', 'C', 'C', 'C', 'C', 'C', 'B', 'B', 'B', 'B', 'B', 'D', 'D', 'D', 'D', 'D', 'F', 'F', 'F', 'F', 'F', 'E', 'E', 'E', 'E', 'E']

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

上のlist_abcdefの例だと、xにlistの要素(["a",0]など)が入って、それの[1]が返されていると想像できます

同じように考えれば良いです。

Python

list_ABCDEF.sort(key=lambda x: d[x])

list_ABCDEF の各要素、具体的には 'A' とか 'B' とかが x に入って、
例えば d['A']、d['B'] の値をソートに利用します。

投稿2021/06/25 08:35

LouiS0616

総合スコア35668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

わからないときは、調べてみましょう。
printして表示すれば中身がわかります。

python

1>>> d = {"A": 0, "B": 2, "C": 1, "D": 3, "E":5, "F":4} 2>>> list_ABCDEF=["A", "B", "C", "D", "E", "F"] * 5 3>>> print(list_ABCDEF) 4['A', 'B', 'C', 'D', 'E', 'F', 'A', 'B', 'C', 'D', 'E', 'F', 'A', 'B', 'C', 'D', 'E', 'F', 'A', 'B', 'C', 'D', 'E', 'F', 'A', 'B', 'C', 'D', 'E', 'F'] 5>>> print(d[list_ABCDEF[0]]) 60 7>>> print(d[list_ABCDEF[1]]) 82 9>>> print(d[list_ABCDEF[2]]) 101 11>>> print(d[list_ABCDEF[3]]) 123 13>>> print(d[list_ABCDEF[4]]) 145 15>>> print(d[list_ABCDEF[5]]) 164 17>>> print(d[list_ABCDEF[6]]) 180

投稿2021/06/25 10:09

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問