値の確認等々のために、辞書型の要素の最初の要素を取りたいことって度々あるかと思いますが、リスト型のように要素の位置を指定したアクセスが出来ないのが難点です。
でも比較的スマートに取る事も出来るのです。
注意:Python3.6以前では辞書の並び順は保証されていなくPython3.7になって初めて順番が保証されるようになりました。
そのため古いPythonのバージョンでは、実行毎に結果が変わる可能性があります。
最初の要素を取る方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
test_dict = { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, } next(iter(test_dict)) # >>> 'a' # 以下のようなものも可能 # next(test_dict.__iter__()) # next(iter(test_dict.items())) |
最後の要素を取る方法
こちらはあまり需要はないかと思いますが、Python3.7以降では、辞書型に対してもreversedが適用できるためそれを適用して上げればOKです。
1 2 |
next(iter(reversed(test_dict))) # >>> 'e' |
避けておいた方がよい取得方法
当初はこんな感じでやってました。
これでも取得は出来るのですが、全てのキーを一度リストにする処理が走るためオブジェクトが巨大な場合はやや処理が重くなります。
1 2 |
list(test_dict)[0] # >>> 'a' |
とはいえそこまで処理時間に差が出るものでもない(せいぜい数ms程度の差)ので既存コードを変える必要はほぼなさそうです。