Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@ko0821

[Python]04章-07 いろいろなデータ構造(ディクショナリの操作)

[Python]04章-07 ディクショナリの操作

ディクショナリは、キーについてはイミュータブルのため操作ができないことは説明しましたが、値についてはミュータブルのため、操作が可能です。
今回はディクショナリの操作について説明していきたいと思います。

ディクショナリの要素の追加

まずは、要素の追加について説明します。
Python Consoleから以下のコードを入力してください。

>>> foodD = {'a' : 'apple', 'b' : 'banana', 'c': 'cake'}
>>> foodD
{'a': 'apple', 'b': 'banana', 'c': 'cake'}

ここまでは前回説明した通り、ディクショナリの作成となります。
では、ディクショナリの変数foodDに要素を追加してみますが、追加方法には2つあります。

1つの要素の追加方法について

まずは1つの要素を追加する方法を説明します。
Python Consoleに以下のコードを入力してください。一度変数foodDの内容を表示してから実行します。

>>> foodD
{'a': 'apple', 'b': 'banana', 'c': 'cake'}
>>> foodD['d'] = 'dragon fruits'
>>> foodD
{'a': 'apple', 'b': 'banana', 'c': 'cake', 'd': 'dragon fruits'}

ディクショナリに要素を追加する際には、変数名[キー] = 値という形で要素を新たに追加していきます。

では、すでにキーがあった際にはどうなるでしょうか?
Python Consoleに以下のコードを入力してください。一度変数foodDの内容を表示してから実行します。

>>> foodD
{'a': 'apple', 'b': 'banana', 'c': 'cake', 'd': 'dragon fruits'}
>>> foodD['c'] = 'carrot'
>>> foodD
{'a': 'apple', 'b': 'banana', 'c': 'carrot', 'd': 'dragon fruits'}

'c'の個所が上書きされていることを確認できます。実は1つのディクショナリについて、重複したキーは指定できません。重複していた場合は、別の値を上書きすることになります。

複数の要素の追加方法について

ディクショナリに複数の要素を追加するには、updateメソッドを利用します。
Python Consoleに以下のコードを入力してください。一度変数foodDの内容を表示してから実行します。

>>> foodD
{'a': 'apple', 'b': 'banana', 'c': 'carrot', 'd': 'dragon fruits'}
>>> foodD.update({'e' : 'egg', 'f' : 'fried potato'})
>>> foodD
{'a': 'apple', 'b': 'banana', 'c': 'carrot', 'd': 'dragon fruits', 'e': 'egg', 'f': 'fried potato'}

別の辞書をマージしている形式となります。foodDを確認すると、'e''f'が追記されていることを確認できます。

ディクショナリの要素の削除

ディクショナリの要素もキーを指定して削除することができます。実はリストと同じく、del文を使用して削除ができます。
Python consoleに以下のコードを入力してください。一度変数foodDの内容を表示してから実行します。

>>> foodD
{'a': 'apple', 'b': 'banana', 'c': 'carrot', 'd': 'dragon fruits', 'e': 'egg', 'f': 'fried potato'}
>>> del foodD['b']
>>> foodD
{'a': 'apple', 'c': 'carrot', 'd': 'dragon fruits', 'e': 'egg', 'f': 'fried potato'}

'b'が削除されているのが確認できました。

また、ディクショナリの全要素を削除するには、リストと同じくclearメソッドを使用します。

>>> foodD
{'a': 'apple', 'c': 'carrot', 'd': 'dragon fruits', 'e': 'egg', 'f': 'fried potato'}
>>> foodD.clear()
>>> foodD
{}

ディクショナリの全要素が削除されて、{ }が出力され、空であることを確認できます。

ディクショナリの要素の探索

ディクショナリでも要素の探索は可能です。今回もキーを指定して探索していきます。
前節では変数名[キー]を指定して探索しましたが、もし該当するキーがないとエラーが出力されます。
今回はキーがない場合でもエラーが出力されない方法を説明します。

Python consoleに以下のコードを入力してください。まずはDにディクショナリを代入していきます。

>>> D = {'NRT' : '成田空港', 'CTS' : '新千歳空港', 'HIJ' : '広島空港'}
>>> D
{'NRT': '成田空港', 'CTS': '新千歳空港', 'HIJ': '広島空港'}

キーがない場合でもエラーが出力されない方法として、getメソッドを使用します。

>>> D
{'NRT': '成田空港', 'CTS': '新千歳空港', 'HIJ': '広島空港'}
>>> D.get('NRT')
'成田空港'
>>> D.get('MYJ')

まず、'NRT'Dに存在するので、'成田空港'が返ってきます。'MYJ'についてはDに存在しないため、何も返ってきません。

ちなみに、print関数を用いて存在しないキーを指定すると、Noneと返ってきます。

>>> print(D.get('MYJ'))
None

他にも、リストの時に説明した、in演算子を使うことでも存在を確認できます。リストとは異なり、キーを指定して確認します。

>>>'NRT' in D
True
>>>'MYJ' in D
False

最後に

ディクショナリについて一通り見てきましたが、基本的にはリストとほぼ同じ操作であることは確認できたかと思います。違いとしては要素の番号を指定するリストに対して、ディクショナリはキーを指定するという点です。今後もよく出てくるデータ構造ですので押さえておきましょう。

【目次リンク】へ戻る

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ko0821
令和元年秋に応用情報技術者試験に1●回目にして合格💦その経験を活かし、ITパスポート~応用情報の対策について、多くの方が苦手としている基礎理論や統計学に関して説明できればと考えております。 現在、情報処理安全確保支援士試験も受験予定。 また最近、Pythonを学び始めました。PythonやPython AI(統計・データ解析)も記事が増えるかもしれません。 専門はコンピュータ科学でした。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?