辞書の内包表記を使用する

Listの内包表記と同様に、辞書でも内包表記を利用することができます。

辞書での内包表記の書式は以下の通りです。

{キー:値 for 変数 in イテレート可能なオブジェクト}

Listの要素をキーとして辞書を作成する

文字列の各要素をキーをして、各要素に値を設定する例を見てみます。

% more dic.py
lsts = ["春","夏","秋","冬"]

lst_dic = {lst:"四季" for lst in lsts}
print (lst_dic)

for lst in lstsでリストlstsから要素を1つずつ取り出して変数lstに入れます。変数lstをキーにして「四季」という値を設定しています。
実行結果は以下の通りです。

% python dic.py
{'秋': '四季', '夏': '四季', '春': '四季', '冬': '四季'}

2つのListから辞書を作成する

続いて、2つのListを組み合わせて辞書を作成する例を見てみます。以下の2つのListから、英語の曜日名をキーにして、日本語の曜日名を値とする辞書を作成してみます。

[“Sunday”,“Monday”,“Tuesday”,“Wednesday”,“Thursday,”Thursday“,”Friday“,”Saturday"][日曜日,月曜日,火曜日,水曜日,木曜日,金曜日,土曜日]

e_week = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
j_week = ["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"]

week = {e_w:j_w for (e_w,j_w) in zip(e_week,j_week)}
print (week)

実行結果は以下の通りです。

% python dic2.py
{'Wednesday': '水曜日', 'Tuesday': '火曜日', 'Saturday': '土曜日', 'Monday': '月曜日', 'Thursday': '木曜日', 'Sunday': '日曜日', 'Friday': '金曜日'}

内包表記まとめ

Pythonで内包表記を使うことで以下の様なメリットがあります。

  • コードがシンプル
  • 可読性の向上
  • 実行速度が高速

実行速度は通常のForループを使用するよりも、約2倍高速されるそうです。

内包表記と通常のFor文の速度を比較してみた

せっかくなので内包表記と通常のFor文で速度がどれぐらい変わるのかを簡単に試してみました。

単純forループとappend()オブジェクトを使用する場合と、内包表記での速度を比較してみます。処理の速度を調べるには、標準ライブラリのtimeitモジュールを使用します。

% more time.py
import timeit

def list_loop():
    result = []
    for i in range(100):
        result.append(i)


def list_compre():
    result = [x for x in range(100)]


print("LIST LOOP : ", timeit.timeit(list_loop))
print("LIST COMPRE : ", timeit.timeit(list_compre))

実行結果は以下の通りです。

% python time.py
LIST LOOP :  9.405803094006842
LIST COMPRE :  4.574793662992306

結果を見れば分かるとおり、内包表記の方が2倍程度早い結果になっていることが分かります。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: