おはようございます。@minomonchanです。
こちらのブログの更新情報などは、Twitterでツイートしていますので、Pythonプログラミングのことや、こちらのブログの最新情報を知りたいという人はTwitterをフォローしていただくと便利かと思います。
Contents
Pythonの辞書型を使おう
辞書もリストと同じで、複数の要素を管理するための利用するデータ型です。
数値、文字列、リスト、辞書などのさまざまなオブジェクトを格納することができます。
PerlやRubyのハッシュ(連想配列)に似ている概念です。
リストは、要素をインデックス(数字)で管理しますが、辞書では、キーで要素を管理します。
キーとそれに対する値をペアにして管理します。
言葉ばかりで説明していても分からないと思いますので、実際にコードを書きながら理解しましょう。
Pythonで辞書を定義する
Pythonで辞書を定義するには、全体を波括弧({})で囲み、キーと値をコロン(:)で並べます。複数の要素があるときは、要素をカンマ(,)で区切ります。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
def main():
name = {"Python":"Guido van Rossum",
"Perl":"Larry Wall",
"Ruby":"Yukihiro Matsumoto"}
print (name)
if __name__ == '__main__':
main()
これを実行すると変数nameで定義された辞書データが表示されます。
キーを使って要素を取り出す
キーを使って辞書の要素を取り出してみましょう。
辞書の要素を取り出すには、リストと同じように角括弧([])を使います。
キーを指定して要素を置き換えることもできます。
なお、辞書の要素には順番という概念がありませんので、リストのようにスライスは使えません。
存在しないキーを取り出そうとすると、当然ですがエラーになります。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
def main():
name = {"Python":"Guido van Rossum",
"Perl":"Larry Wall",
"Ruby":"Yukihiro Matsumoto"}
print (name["Python"])
name["Python"] = "GvR"
print (name["Python"])
if __name__ == '__main__':
main()
これを実行すると、Guido van RossumとGvRと表示され、キーを使って辞書から要素を取り出せることと、要素を別の値で置き換えることができることが分かると思います。
キーを使って要素を追加する
辞書にキーを追加するときは、新しいキーを添えて値を代入します。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
def main():
name = {"Python":"Guido van Rossum",
"Perl":"Larry Wall",
"Ruby":"Yukihiro Matsumoto"}
name["Java"] = "Oracle"
print (name)
if __name__ == '__main__':
main()
これを実行するとキーと値が追加されているのが分かります。
キーを使って要素を削除する
辞書の要素を削除するには、リストの要素を削除するのと同じでdel文を使います。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
def main():
name = {"Python":"Guido van Rossum",
"Perl":"Larry Wall",
"Ruby":"Yukihiro Matsumoto"}
del name["Python"]
print (name)
if __name__ == '__main__':
main()
これを実行するとPythonをキーとしたデータが削除されていることが分かります。
キーの一覧を表示しよう
Pythonでは、辞書もオブジェクトです。辞書にもよく使う機能がメソッドとしてあらかじめ用意されています。
辞書のメソッドを使う事で、辞書に格納されているキーや値のデータを簡単に取り出すことができます。
keys()を使えば、辞書に登録されているキーの一覧を取得することができます。
values()を使えば、辞書に登録されている値の一覧を取得することができます。
items()を使えば、辞書に登録されているキーと値の一覧を取得することができます。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
def main():
name = {"Python":"Guido van Rossum",
"Perl":"Larry Wall",
"Ruby":"Yukihiro Matsumoto"}
print (name.keys())
print (name.values())
print (name.items())
if __name__ == '__main__':
main()
これを実行すると、それぞれキーと値の一覧が表示されるのが確認できます。
辞書のネスト
辞書の値に、辞書それ自体を格納することもできます。
リストの多次元配列と同じようなイメージです。
データ構造が複雑になるので、慣れるまでは難しく感じるかもしれませんが、慣れると複雑なデータをシンプルに格納することができるため便利です。
取り出すときも、リストの多次元配列と同じです角括弧を続けて書きます。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
def main():
rec = {"name":{"first":"Rossum", "middle":"van", "last":"Guido"},
"age":"64"}
print (rec["name"]["last"])
print (rec["age"])
if __name__ == '__main__':
main()
これを実行すると、それぞれの値が表示されます。
まとめ
今回はPythonの辞書型の説明をしました。
前回のリストをしっかりと理解できていれば、その応用なので、それほど難しくはないと思います。
辞書もよく使いますので、必ず自分で使いこなせるように、何度も書き換えたりして練習しておいて下さい。