Pythonでリストと辞書のインデックス番号を取得する
enumerateとリストについて
enumerateとは
リストを学んだあとに、リストのインデックス番号をfor文で使いたい場合があってもどうやってインデックス番号まで取得するかでつまずくことがあると思います。
以下のコードではリストの内容(要素)はprint出来ても、その要素がリストの何番目かは分かりません。
list1 = ["a", "b", "c"]
for letter in list1:
print(letter)
実行結果:
a
b
c
そんなときに使えるメソッドが;
enumerate
です。
enumerate()関数は、forループの中でリストや辞書の何番目か(インデックス番号)も一緒に取得できます。
リストでのenumerateの基本の使い方
基本の使い方は以下です。
for <取得するインデックス番号の変数>, <取得する要素の変数> in enumerate(<リストの変数名>):
pass
例えば以下ようなリストがあるします。
list1 = ["a", "b", "c"]
for文とenumerateを使う事によって
インデックス 要素
1 a
2 b
3 c
が順番に実行されます。
使い方の例
例えば、インデックス番号と要素を同時にプリントするコードを試して見ましょう。
list1 = ["a", "b", "c"]
for idx, letter in enumerate(list1):
# インデックスと文字を一行で出力
print(idx, letter)
# 一行開ける
print()
出力:
0 a
1 b
2 c
このようにインデックスと要素が順番に取得出来ます。
使いどころ
例えば、お客のリストを作り、お客の中から特定のインデックス番号の人がくじに当たるようなコードを作るとします。
enumerateを使ってみましょう。
customers = ["田中", "斉藤", "佐々木"]
# インデックス番号が2番目がくじに当たるとする
# idx: 取得出来るインデックス番号 name: リストの要素
for idx, name in enumerate(customers):
# インデックス2番目の客の時、客の名前と当たりと表示
if idx == 2:
print(name)
print("当たり")
実行結果:
佐々木
当たり
辞書でenumerateを使う場合
辞書についての復習
enumerateはfor文でリストのインデックス番号を取得出来ます。
同じように辞書のインデックス番号を取得することもできます。
ここで辞書の使い方の復習をすると、
辞書は{}で囲まれ、キー:バリュー(要素)が一つの塊です。
<辞書の変数> = {<キー1>: <要素1>, <キー2>: <要素2>, .....}
注意点として辞書はリストのようにインデックス番号で要素を取得出来ません。
リストはインデックス番号で要素が取得できます。
lst = ["a", "b", "c"]
lst[1] # 実行結果: b
ですが辞書では取得出来ません。
以下はエラーになります。
dct = {"a": "aaa", "b": "bbb"}
dct[1]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[1], line 2
1 dct = {"a": "aaa", "b": "bbb"}
----> 2 dct[1]
KeyError: 1
辞書で要素を取り出したい場合はインデックスではなくてキーを[ ]に入れます。
キーが文字型の場合""を付けることを忘れないでください。
dct = {"a": "aaa", "b": "bbb"}
dct["a"] # 実行結果: 'aaa'
辞書でのenumerateの使い方
基本的な使い方は以下です。
for <取得するインデックス番号の変数>, <取得するキー> in <辞書の変数名>:
pass
リストでの使い方と同じです。
ただ、リストでは取得出来るのはインデックス番号と要素でしたが、辞書ではインデックス番号とキーを取得します。
要素を取得するには、
<辞書名>[キー]
を利用します。
使用例:
dct = {"a": "aaa", "b": "bbb"}
for idx, ky in enumerate(dct):
# idx: インデックス
print(idx)
# ky: キー
print(ky)
# dct[ky]: 要素
print(dct[ky])
# 一行空ける
print()
実行結果:
0
a
aaa
1
b
bbb
辞書でインデックス番号、キー、要素を取得しました。