71962


以下のコードで **dic.sort(key=lambda dic: dic[1])** のlamda関数の意味が分からないでいます。  
dic[1]はリストdicの２番目の要素だと思います。つまり、(2,'Nakao')だと思います。  
しかし、タプルをキーにソートするというのが分かりません。  
実際にコードを実行すると名前を元にソートしているようです。  
理解できずに困っています。  
ご指導よろしくお願いいたします。

[code]

    dive_into_code = [(1, 'Noro'), (2, 'Nakao'), (3, 'Miyaoka'), (4, 'Kimura')]
    dic = dive_into_code
    dic.sort(key=lambda dic: dic[1])
    
    print(dic)
    
[/code]


CC BY-SA 4.0
2020-11-15T03:08:26.800
71961
2020-11-15T03:29:45.773
34450
question
python
Pythonでlistのsortでkeyの設定が理解できません


> dic[1]はリストdicの２番目の要素だと思います。つまり、(2,'Nakao')だと思います。

そうではなく、`dic.sort(key=lambda dic: dic[1])`において`lambda
dic`の`dic`は`dic.sort`の`dic`の各要素（リストの各要素）を表しています。つまり、`key=lambda dic:
dic[1]`の`dic[1]`は'Noro', 'Nakao', 'Miyaoka',
'Kimura'を指します。なので質問のコードは名前のアルファベット順に並べ替えられます。

質問のコードでは`dic`が複数使われていて分かりにくくなっているので、下記の様に書いてみると分かりやすくなるかと思います。

[code]

    dive_into_code = [(1, 'Noro'), (2, 'Nakao'), (3, 'Miyaoka'), (4, 'Kimura')]
    dive_into_code.sort(key=lambda name: name[1])
    
    print(dive_into_code)
    # [(4, 'Kimura'), (3, 'Miyaoka'), (2, 'Nakao'), (1, 'Noro')]
    
[/code]


CC BY-SA 4.0
2020-11-15T03:29:45.773
71962
2020-11-15T03:29:45.773
39819
71961
answer