HOME
Python
はじめに
環境構築
日時操作
文法
標準ライブラリ
データ型
リスト操作
辞書操作
Tkinter
組み込み関数
関数・クラス
コーヒーブレイク
Math関数
Twitter関連
開発環境
PHP
配列操作
文字列操作
変数操作
日付時刻
ファイル操作
ガジェット
デジタルカメラ
カメラ
フィルムカメラ
写真
DIY
PC関連
Raspberry Pi
自転車
100均
家電
日用品
鉄道
フェレット
プログラミング
karabiner
WordPress
vim
たばこ
ベース
うつ病
動画
雑記

【Python】辞書操作:要素のソート(並び替え)

<![CDATA[

嫁ちゃん
嫁ちゃん
今回は辞書のソート(並び替え)ですね。
わたし
わたし
そうだね。ここでは sorted関数を使って実装します。 辞書のソート(並び替え)も覚えてしまえば、そんなに難しくないので、ここで一緒に学びましょう!

辞書とは?

辞書は他の言語にも “連想記憶 (associated memory)” や “連想配列 (associative array)” という名前で存在することがあります。ある範囲の数でインデクス化されているシーケンスと異なり、辞書は キー (key) でインデクス化されています。このキーは何らかの変更不能な型になります。文字列、数値は常にキーにすることができます。タプルは、文字列、数値、その他のタプルのみを含む場合はキーにすることができます。
5.5. 辞書型 (dictionary) – Python3.8.1 ドキュメント

こちらも合わせてご覧ください。
>>>【Python】辞書操作:辞書の作成
>>>【Python】辞書操作:キーと値の存在チェックと検索
>>>【Python】辞書操作:要素の追加・変更
>>>【Python】辞書操作:要素の削除

辞書の要素をソート(並び替え)

sorted関数 の引数に辞書のみを指定した場合

Python
dic = {'key99': 99, 'key1': 1, 'key2': 2, 'key3': 3} dic1 = sorted( dic ) print( dic1 ) dic2 = sorted( dic, reverse=True ) print( dic2 )
実行結果
['key1', 'key2', 'key3', 'key99'] #<-- 昇順 ['key99', 'key3', 'key2', 'key1'] #<-- 降順

sorted の引数に辞書を渡すだけだと、キー項目だけのリストが出来上がります。引数で渡した辞書には変更は加えられません。

sorted関数の引数に辞書の items() を指定した場合

Python
dic = {'key99': 99, 'key1': 1, 'key2': 2, 'key3': 3} dic1 = sorted( dic.items() ) print( dic1 ) dic2 = sorted( dic.items(), reverse=True ) print( dic2 )
実行結果
[('key1', 1), ('key2', 2), ('key3', 3), ('key9', 99)] #<-- 昇順 [('key9', 99), ('key3', 3), ('key2', 2), ('key1', 1)] #<-- 降順

sorted の引数に辞書の items() を渡すと、キー項目で並び替えられたタプルのリストが出来上がります。引数で渡した辞書には変更は加えられません。

sorted関数の引数に 無名関数 lambda を記述して key で並び替える

Python
dic = { 'key9': 99, 'key1': 1, 'key2': 2, 'key3': 3 } dic1 = sorted( dic.items(), key=lambda x:x[0] ) print( dic1 ) dic2 = sorted( dic.items(), key=lambda x:x[0], reverse=True ) print( dic2 )
実行結果
[('key1', 1), ('key2', 2), ('key3', 3), ('key9', 99)] [('key9', 99), ('key3', 3), ('key2', 2), ('key1', 1)]

keyで並び替え(昇順、降順)ができましたね。

sorted関数の引数に 無名関数 lambda を記述して value で並び替える

Python
dic = { 'key9': -1, 'key1': 1, 'key2': 2, 'key3': 3 } dic1 = sorted( dic.items(), key=lambda x:x[1] ) print( dic1 ) dic2 = sorted( dic.items(), key=lambda x:x[1], reverse=True ) print( dic2 )
実行結果
[('key9', -1), ('key1', 1), ('key2', 2), ('key3', 3)] [('key3', 3), ('key2', 2), ('key1', 1), ('key9', -1)]

valueで並び替え(昇順、降順)ができましたね。

嫁ちゃん
嫁ちゃん

無名関数 lambda って難し感じがしますね。

わたし
わたし

関数定義を省略した記述になるので、関数定義の手間は省けるけど、慣れないとどういったコードが書かれているのかわからなくなってしまうね。少しずつ学んでいこうね。

この記事がお役に立ちましたら幸いです。

では、また。

※本サイトの漫画やイラストはフィクションであり、実在の製品・団体・人物・地名とは関係ありません。
※本サイトに掲載する情報には充分に注意を払っておりますが、その内容について保証するものではありません。
※本サイトの使用ならびに閲覧によって生じたいかなる損害にも責任を負いかねます。

]]>

コメント

タイトルとURLをコピーしました