前書き

*辞書*はPythonの組み込み*マッピング*タイプです。 辞書は*キー*を*値*にマップし、これらのキーと値のペアはPythonにデータを保存する便利な方法を提供します。

通常、IDやユーザープロファイルに含まれる情報など、関連するデータを保持するために使用される辞書は、どちらかの側に中括弧で構成されます + {+ +} +

辞書は次のようになります。

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

中括弧に加えて、辞書全体にコロン( )もあります。

コロンの左側の単語がキーです。 *キー*は任意の不変のデータ型で構成できます。 上記の辞書のキーは次のとおりです。

  • + 'username' +

  • + 'online' +

  • + 'フォロワー' +

上記の例の各キーは、https://www.digitalocean.com/community/tutorials/an-introduction-to-working-with-strings-in-python-3 [string]値です。

コロンの右側の単語は値です。 *値*は任意のデータ型で構成できます。 上記の辞書の値は次のとおりです。

  • + 'sammy-shark' +

  • + True +

  • + 987 +

これらの各値は、文字列、https://www.digitalocean.com/community/tutorials/understanding-boolean-logic-in-python-3 [ブール]、またはhttps://www.digitalocean.com/communityのいずれかです。 / tutorials / understanding-data-types-in-python-3#integers [integer]。

辞書「+ sammy +」を出力しましょう:

print(sammy)
Output{'username': 'sammy-shark', 'followers': 987, 'online': True}

出力を見ると、キーと値のペアの順序がずれている可能性があります。 Pythonバージョン3.5以前では、辞書のデータ型は順不同です。 ただし、Pythonバージョン3.6以降では、辞書データ型の順序は変わりません。 辞書が順序付けられているかどうかに関係なく、キーと値のペアはそのまま残り、リレーショナルの意味に基づいてデータにアクセスできます。

辞書要素へのアクセス

関連するキーを参照することで、辞書の値を呼び出すことができます。

キーを使用したデータ項目へのアクセス

辞書はデータを保存するためのキーと値のペアを提供するため、Pythonプログラムの重要な要素になります。

Sammyのユーザー名を分離したい場合は、 `+ sammy [‘username’] +`を呼び出して分離できます。 それを印刷してみましょう:

print(sammy['username'])
Outputsammy-shark

辞書は、リストの場合のように特定のインデックス値を取得するために整数を呼び出す代わりに、キーに値を割り当て、そのキーを呼び出して関連する値を取得できるという点でデータベースのように動作します。

キー `+ ‘username’ `を呼び出すことにより、そのキーの値、つまり ` ‘sammy-shark’ +`を受け取ります。

`+ sammy +`辞書の残りの値は、同じ形式を使用して同様に呼び出すことができます。

sammy['followers']
# Returns 987

sammy['online']
# Returns True

辞書のキーと値のペアを利用することで、キーを参照して値を取得できます。

メソッドを使用して要素にアクセスする

キーを使用して値にアクセスすることに加えて、いくつかの組み込みメソッドを使用することもできます。

  • `+ dict.keys()+`はキーを分離します

  • `+ dict.values()+`は値を分離します

  • `+ dict.items()`は、 `(key、value)+`タプルペアのリスト形式でアイテムを返します

キーを返すには、 `+ dict.keys()`メソッドを使用します。 この例では、変数名を使用し、 ` sammy.keys()`になります。 それを ` print()+`メソッドに渡して、出力を見てみましょう:

print(sammy.keys())
Outputdict_keys(['followers', 'username', 'online'])

`+ dict_keys +`クラスの反復可能なビューオブジェクト内にキーを配置する出力を受け取ります。 その後、キーはリスト形式で印刷されます。

このメソッドは、ディクショナリ全体のクエリに使用できます。 たとえば、2つの辞書データ構造間で共有される共通キーを見てみましょう。

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}
jesse = {'username': 'JOctopus', 'online': False, 'points': 723}

for common_key in sammy.keys() & jesse.keys():
   print(sammy[common_key], jesse[common_key])

辞書「+ sammy 」および辞書「 jesse +」は、それぞれユーザープロファイル辞書です。

ただし、サミーにはフォロワーが関連付けられたソーシャルプロファイルがあり、ジェシーにはポイントが関連付けられたゲームプロファイルがあるため、プロファイルのキーは異なります。 それらに共通する2つのキーは、「+ username」と「+ online」ステータスです。これらは、この小さなプログラムを実行したときに確認できます。

Outputsammy-shark JOctopus
True False

確かにプログラムを改善して出力をユーザーが読みやすくすることができますが、これは `+ dict.keys()+`を使用してさまざまなディクショナリをチェックし、共有されているかどうかを確認できることを示しています。 これは特に大きな辞書に役立ちます。

同様に、 `+ dict.values()`メソッドを使用して、 ` sammy.values()`として構築される ` sammy +`辞書の値をクエリできます。 それらを印刷してみましょう:

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

print(sammy.values())
Outputdict_values([True, 'sammy-shark', 987])

`+ keys()`と ` values()`の両方のメソッドは、それぞれ ` dict_keys `と ` dict_values `のビューオブジェクトを持つ ` sammy +`辞書にあるキーと値のソートされていないリストを返します。

辞書内のすべてのアイテムに興味がある場合、 `+ items()+`メソッドでそれらにアクセスできます:

print(sammy.items())
Outputdict_items([('online', True), ('username', 'sammy-shark'), ('followers', 987)])

これの返されるフォーマットは、 `+ dict_items `ビューオブジェクトを持つ `(key、value)+`タプルペアで構成されるリストです。

`+ for`ループを使用して、返されたリスト形式を反復処理できます。 たとえば、特定のディクショナリのキーと値のそれぞれを出力し、文字列を追加することで人間が読みやすくすることができます。

for key, value in sammy.items():
   print(key, 'is the key for the value', value)
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 +」辞書内の項目を反復処理し、キーと値を行ごとに出力し、人間が理解しやすくするための情報を提供しました。

組み込みのメソッドを使用して、ディクショナリデータ構造からアイテム、値、およびキーにアクセスできます。

辞書の変更

辞書は変更可能なデータ構造であるため、変更することができます。 このセクションでは、辞書要素の追加と削除について説明します。

辞書要素の追加と変更

メソッドまたは関数を使用せずに、次の構文を使用してキーと値のペアを辞書に追加できます。

dict[key] = value

`+ usernames +`と呼ばれる辞書にキーと値のペアを追加して、実際にこれがどのように機能するかを見ていきます。

usernames = {'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

usernames['Drew'] = 'squidly'

print(usernames)
Output{'Drew': 'squidly', 'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

これで、辞書が「+ ‘Drew’: ‘squidly’ + `キーと値のペアで更新されたことがわかります。 辞書は順序付けられていない場合があるため、このペアは辞書出力のどこにでも存在する可能性があります。 プログラムファイルの後半で `+ usernames +`辞書を使用する場合、追加のキーと値のペアが含まれます。

さらに、この構文は、キーに割り当てられた値を変更するために使用できます。 この場合、既存のキーを参照し、別の値を渡します。

特定のネットワークのユーザーの1人である辞書「+ drew 」を考えてみましょう。 今日、このユーザーはフォロワーを増やしたと言うので、 ` ‘followers’ `キーに渡された整数値を更新する必要があります。 辞書が変更されたことを確認するには、 ` print()+`関数を使用します。

drew = {'username': 'squidly', 'online': True, 'followers': 305}

drew['followers'] = 342

print(drew)
Output{'username': 'squidly', 'followers': 342, 'online': True}

出力では、フォロワーの数が整数値「305」から「342」にジャンプしたことがわかります。

このメソッドを使用して、ユーザー入力を使用してキーと値のペアを辞書に追加できます。 コマンドラインで実行し、ユーザーからの入力でさらに名前と関連ユーザー名を追加できるクイックプログラム、「+ usernames.py +」を作成しましょう。

usernames.py

# Define original dictionary
usernames = {'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

# Set up while loop to iterate
while True:

   # Request user to enter a name
   print('Enter a name:')

   # Assign to name variable
   name = input()

   # Check whether name is in the dictionary and print feedback
   if name in usernames:
       print(usernames[name] + ' is the username of ' + name)

   # If the name is not in the dictionary...
   else:

       # Provide feedback
       print('I don\'t have ' + name + '\'s username, what is it?')

       # Take in a new username for the associated name
       username = input()

       # Assign username value to name key
       usernames[name] = username

       # Print feedback that the data was updated
       print('Data updated.')

コマンドラインでプログラムを実行しましょう:

python usernames.py

プログラムを実行すると、次のような出力が得られます。

OutputEnter a name:


Enter a name:

I don't have Jesse's username, what is it?

Data updated.
Enter a name:

プログラムのテストが完了したら、 `+ CTRL + C `を押してプログラムをエスケープできます。 https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-pythonを使用して、プログラムを終了するトリガー(「 q +」の文字を入力するなど)を設定できます。 -3-2 [条件付きステートメント]コードを改善します。

これは、辞書をインタラクティブに変更する方法を示しています。 この特定のプログラムでは、「+ CTRL + C +」でプログラムを終了するとすぐに、https://www.digitalocean.com/community/tutorials/how-to-への方法を実装しない限り、すべてのデータが失われますhandle-plain-text-files-in-python-3 [ファイルの読み書きを処理する]。

+ dict.update()+`メソッドを使用して辞書を追加および変更することもできます。 これは、リストで利用可能な `+ append()+ methodとは異なります。

以下の「+ jesse 」辞書で、「」フォロワー」キーを追加し、「 jesse.update()」で整数値を与えます。 それに続いて、更新された辞書を ` print()+`しましょう。

jesse = {'username': 'JOctopus', 'online': False, 'points': 723}

jesse.update({'followers': 481})

print(jesse)
Output{'followers': 481, 'username': 'JOctopus', 'points': 723, 'online': False}

出力から、 `+ ‘followers’:481 `キーと値のペアが辞書 ` jesse +`に正常に追加されたことがわかります。

`+ dict.update()+`メソッドを使用して、特定のキーの特定の値を置き換えることにより、既存のキーと値のペアを変更することもできます。

`+ sammy `辞書でSammyのオンラインステータスを ` True `から ` False +`に変更しましょう。

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

sammy.update({'online': False})

print(sammy)
Output{'username': 'sammy-shark', 'followers': 987, 'online': False}

行 `+ sammy.update({‘online’:False})`は既存のキー ` ‘online’ `を参照し、そのブール値を ` True `から ` False `に変更します。 辞書の ` print()+`を呼び出すと、出力で更新が行われます。

辞書に項目を追加したり値を変更したりするには、 `+ dict [key] = value `構文またはメソッド ` dict.update()+`を使用できます。

辞書要素の削除

辞書データ型内でキーと値のペアを追加して値を変更できるように、辞書内のアイテムを削除することもできます。

辞書からキーと値のペアを削除するには、次の構文を使用します。

del dict[key]

ユーザーの1人を表す `+ jesse `辞書を見てみましょう。 Jesseはゲームをプレイするためにオンラインプラットフォームを使用しなくなったと言うので、「 ‘points’ + `キーに関連付けられたアイテムを削除します。 次に、辞書を印刷して、アイテムが削除されたことを確認します。

jesse = {'username': 'JOctopus', 'online': False, 'points': 723, 'followers': 481}

del jesse['points']

print(jesse)
Output{'online': False, 'username': 'JOctopus', 'followers': 481}

行 `+ del jesse [‘points’] `は、キーと値のペア ` ‘points’:723 `を ` jesse +`辞書から削除します。

すべての値の辞書をクリアしたい場合は、 `+ dict.clear()+`メソッドでクリアできます。 これにより、プログラムで後で使用する必要がある場合に備えて、指定された辞書が保持されますが、アイテムは含まれなくなります。

`+ jesse +`辞書内のすべてのアイテムを削除しましょう:

jesse = {'username': 'JOctopus', 'online': False, 'points': 723, 'followers': 481}

jesse.clear()

print(jesse)
Output{}

出力は、キーと値のペアがない空の辞書があることを示しています。

特定の辞書が不要になったら、 `+ del +`を使用して完全に削除できます。

del jesse

print(jesse)

`+ jesse `辞書を削除した後に ` print()+`の呼び出しを実行すると、次のエラーが表示されます。

Output...
NameError: name 'jesse' is not defined

辞書は変更可能なデータ型であるため、追加、変更、およびアイテムの削除と消去を行うことができます。

結論

このチュートリアルでは、Pythonの辞書データ構造について説明しました。 辞書はキーと値のペアで構成され、インデックス作成に依存せずにデータを保存する方法を提供します。 これにより、その意味と他のデータ型との関係に基づいて値を取得できます。

ここから、「https://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3 [データ型について]」チュートリアルで他のデータ型の詳細を学ぶことができます。