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

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倍程度早い結果になっていることが分かります。

おすすめ記事

  • 【特集】 いまさら聞けないIT契約書のはなし【第4回 契約の種類(2)】
  • 【特集】 進化する脅威にどう立ち向かうか【最終回】
  • 【特集】 災害復旧、事業継続計画(BCP)などの対策状況(2018年)・後編
  • 【特集】 地震や台風から情報資産を守る救世主・データセンター活用の今
  • 【特集】 「固定電話も、ムダ残業もやめた」徹底した"富士通流"働き方改革
  • 関連記事

    メールマガジン

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

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

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

    もちろん無料です!!

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

    メールアドレス:

    検索

    特集

    初心者のためのciscoルータの管理

    目指せPMP


    著書

    図解入門 よくわかる最新ネットワーク技術の基本と仕組み

    初心者のためのCiscoルータ運用ガイド: 最速でCiscoルータを理解するための解説書

    目指せPMP PMBOK第5版対応: 最速でPMPに合格するための解説書

    見てわかるTCP/IP

    おすすめ記事

    カテゴリ

    ブログ最新記事