導入
辞書はPythonの組み込みマッピングタイプです。辞書はキーを値にマップし、これらのキーと値のペアはPythonでデータを格納する便利な方法を提供します。
通常、IDやユーザープロファイルに含まれる情報など、関連するデータを保持するために使用されます。辞書は、両側に波括弧 {
}
を使用して構築されます。
情報: このチュートリアルの例コードに従うには、python3
コマンドを実行してローカルシステムでPythonインタラクティブシェルを開きます。その後、>>>
プロンプトの後にそれらを追加するか、コピーして貼り付けるか、編集できます。
A dictionary looks like this:
波括弧の他に、辞書全体にコロン(:
)があります。
コロンの左側の単語がキーです。キーは任意の不変データ型で構成できます。上記の辞書のキーは次のとおりです:
'username'
'online'
'followers'
上記の例の各キーは文字列値です。
コロンの右側の単語が値です。値は任意のデータ型で構成できます。上記の辞書の値は次のとおりです:
'sammy-shark'
True
987
辞書sammy
を出力してみましょう:
Output{'username': 'sammy-shark', 'followers': 987, 'online': True}
出力を見ると、キーと値のペアの順序が変わっているかもしれません。Pythonバージョン3.5以前では、辞書データ型は順不同です。しかし、Pythonバージョン3.6以降では、辞書データ型は順序付けされたままです。辞書が順序付けされているかどうかに関係なく、キーと値のペアはそのまま保持されるため、関連する意味に基づいてデータにアクセスできます。
前提条件
Python 3がインストールされ、コンピュータまたはサーバーにプログラミング環境が設定されている必要があります。プログラミング環境が設定されていない場合は、ローカルプログラミング環境またはサーバー上のプログラミング環境に関するインストールおよび設定ガイドを参照してください(Ubuntu、CentOS、Debianなど、お使いのオペレーティングシステムに適したもの)。
辞書要素へのアクセス
関連するキーを参照することで、辞書の値を呼び出すことができます。
キーでデータ項目にアクセスする
辞書はデータを格納するためのキーと値のペアを提供するため、Pythonプログラムで重要な要素となります。
Sammyのユーザー名を分離したい場合は、sammy['username']
を呼び出すことで行うことができます。それを出力してみましょう:
Outputsammy-shark
辞書は、リストのように特定のインデックス値を取得するために整数を呼び出すのではなく、値をキーに割り当て、そのキーを呼び出して関連する値を取得する点でデータベースのように振る舞います。
キー'username'
を呼び出すことで、そのキーの値である'sammy-shark'
を受け取ります。
残りの値は、同じ形式でsammy
辞書から呼び出すことができます:
辞書のキーと値のペアを利用することで、キーを参照して値を取得することができます。
要素にアクセスする方法の使用
値にアクセスするためにキーを使用するだけでなく、いくつかの組み込みメソッドを使用することもできます。
dict.keys()
はキーを分離しますdict.values()
は値を分離しますdict.items()
は、(key、value)
のタプルのペアのリスト形式のアイテムを返します
キーを返すには、dict.keys()
メソッドを使用します。この場合、変数名を使用してsammy.keys()
となります。それをprint()
メソッドに渡して出力を見てみましょう。
Outputdict_keys(['followers', 'username', 'online'])
私たちは、キーがdict_keys
クラスの反復可能なビューオブジェクト内に配置される出力を受け取ります。その後、キーがリスト形式で印刷されます。
このメソッドは辞書全体を検索するために使用できます。たとえば、2つの辞書データ構造間で共有される共通のキーを見ることができます。
辞書sammy
と辞書jesse
は、それぞれユーザープロファイル辞書です。
彼らのプロファイルには異なるキーがありますが、Sammyは関連するフォロワーを持つソーシャルプロファイルを持ち、Jesseは関連するポイントを持つゲームプロファイルを持っています。彼らが共通して持っている2つのキーはusername
とonline
ステータスであり、この小さなプログラムを実行するとそれらを見つけることができます。
Outputsammy-shark JOctopus
True False
プログラムを改善して、出力をよりユーザーが読みやすくすることはできますが、これはdict.keys()
がさまざまな辞書をチェックして共通点を見つけるために使用できることを示しています。これは特に大規模な辞書に対して便利です。
同様に、dict.values()
メソッドを使用してsammy
辞書内の値をクエリできます。これはsammy.values()
として構築されます。それらを出力してみましょう:
Outputdict_values([True, 'sammy-shark', 987])
keys()
およびvalues()
メソッドの両方は、sammy
辞書内のキーと値を表すdict_keys
およびdict_values
のビューオブジェクトを使用して、ソートされていないリストを返します。
辞書内のすべてのアイテムに興味がある場合は、items()
メソッドを使用してそれらにアクセスできます:
Outputdict_items([('online', True), ('username', 'sammy-shark'), ('followers', 987)])
これの返される形式は、dict_items
のビューオブジェクトとともに(key, value)
タプルのペアで構成されたリストです。
返されたリスト形式をfor
ループで反復処理できます。たとえば、特定の辞書の各キーと値を出力し、それをより人間が読みやすいように文字列を追加することができます:
Outputonline is the key for the value True
followers is the key for the value 987
username is the key for the value sammy-shark
上記のfor
ループは、sammy
辞書内のアイテムを反復処理し、キーと値を行ごとに出力し、それを人間が理解しやすくするための情報を提供しました。
辞書データ構造からアイテム、値、キーにアクセスするために組み込みメソッドを使用できます。
辞書の変更
辞書は変更可能なデータ構造なので、それらを変更することができます。このセクションでは、辞書要素の追加と削除について説明します。
辞書要素の追加と変更
メソッドや関数を使用せずに、以下の構文を使って辞書にキーと値のペアを追加できます:
これがどのように機能するかを見てみましょう。辞書にusernames
という名前のキーと値のペアを追加します:
Output{'Drew': 'squidly', 'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}
辞書が'Drew': 'squidly'
のキーと値のペアで更新されたことがわかります。辞書は順序付けされていない可能性があるため、このペアは辞書の出力のどこにでも現れるかもしれません。後でプログラムファイルでusernames
辞書を使用すると、追加されたキーと値のペアが含まれます。
さらに、この構文は、キーに割り当てられた値を変更するためにも使用できます。この場合、既存のキーを参照し、異なる値を渡します。
与えられたネットワーク上のユーザーの1つである辞書drew
を考えてみましょう。今日、このユーザーがフォロワーを増やしたとします。したがって、'followers'
キーに渡される整数値を更新する必要があります。辞書が変更されたことを確認するために、print()
関数を使用します。
Output{'username': 'squidly', 'followers': 342, 'online': True}
出力では、フォロワー数が整数値305
から342
に増加したことが分かります。
この方法を使用して、ユーザー入力で辞書にキーと値のペアを追加できます。ユーザー名と関連するユーザー名を追加するためのコマンドライン上で実行されるusernames.py
というプログラムを書いてみましょう。
プログラムをコマンドラインで実行しましょう:
プログラムを実行すると、次のような出力が得られます:
OutputEnter a name:
Sammy
sammy-shark is the username of Sammy
Enter a name:
Jesse
I don't have Jesse's username, what is it?
JOctopus
Data updated.
Enter a name:
プログラムのテストが終了したら、プログラムを終了するためにCTRL + C
を押すことができます。コードを改善するために条件文を使用してプログラムを終了するトリガーを設定することができます。
これは、辞書をインタラクティブに変更する方法を示しています。特定のプログラムでは、CTRL + C
でプログラムを終了すると、データがすべて失われます。ファイルの読み取りと書き込みを処理する方法を実装しない限り、データは失われます。
また、dict.update()
メソッドを使用して辞書を追加および変更することができます。これは、リストで利用可能なappend()
メソッドとは異なります。
以下のjesse
辞書では、キー'followers'
を追加し、整数値を与えましょう。jesse.update()
を使用します。その後、更新された辞書をprint()
します。
Output{'followers': 481, 'username': 'JOctopus', 'points': 723, 'online': False}
出力から、'followers': 481
のキーと値が辞書jesse
に正常に追加されたことがわかります。
また、特定のキーに対する指定された値を置き換えることで、既存のキーと値のペアを変更するためにdict.update()
メソッドを使用することもできます。
サミーのオンライン状態をTrue
からFalse
に変更しましょう:
Output{'username': 'sammy-shark', 'followers': 987, 'online': False}
行sammy.update({'online': False})
は既存のキー'online'
を参照し、そのブール値をTrue
からFalse
に変更します。辞書をprint()
すると、更新が出力に反映されます。
辞書にアイテムを追加したり値を変更するには、dict[key] = value
の構文またはdict.update()
メソッドを使用できます。
辞書要素の削除
辞書データ型内でキーと値を追加したり値を変更できるだけでなく、辞書内のアイテムを削除することもできます。
辞書からキーと値のペアを削除するには、次の構文を使用します:
ユーザーの1人を表すjesse
辞書を取り上げましょう。ジェシーがゲームのオンラインプラットフォームを使用しなくなったとしますので、'points'
キーに関連付けられたアイテムを削除します。その後、辞書を印刷して、アイテムが削除されたことを確認します:
Output{'online': False, 'username': 'JOctopus', 'followers': 481}
行del jesse['points']
はjesse
辞書からキーと値のペア'points': 723
を削除します。
辞書のすべての値をクリアしたい場合、dict.clear()
メソッドを使用できます。これにより、プログラムの後で再利用する必要がある場合に、指定された辞書が保持されますが、もはやアイテムを含みません。
以下のように、jesse
辞書内のすべてのアイテムを削除しましょう:
Output{}
出力は、キーと値のペアがない空の辞書を示しています。
特定の辞書がもはや必要ない場合、それを完全に削除するためにdel
を使用できます:
jesse
辞書を削除した後にprint()
を呼び出すと、次のエラーが発生します:
Output...
NameError: name 'jesse' is not defined
辞書は可変データ型であるため、追加、変更、アイテムの削除、クリアができます。
結論
このチュートリアルでは、Pythonの辞書データ構造について説明しました。辞書はキーと値のペアで構成され、インデックスに依存せずにデータを格納する方法を提供します。これにより、他のデータ型との関係や意味に基づいて値を取得できます。
次に、「データ型の理解」チュートリアルで他のデータ型について学ぶことができます。
プログラミングプロジェクトで使用される辞書データ型は、Scrapyを使用したウェブスクレイピングなどに見られます。
Source:
https://www.digitalocean.com/community/tutorials/understanding-dictionaries-in-python-3