Listの内包表記と同様に、辞書でも内包表記を利用することができます。
辞書での内包表記の書式は以下の通りです。
{キー:値 for 変数 in イテレート可能なオブジェクト}
文字列の各要素をキーをして、各要素に値を設定する例を見てみます。
% 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から、英語の曜日名をキーにして、日本語の曜日名を値とする辞書を作成してみます。
[“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ループと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倍程度早い結果になっていることが分かります。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓