Python-辞書

辞書では、各キーはコロン(:)で値から区切られ、項目はコンマで区切られ、全体が中括弧で囲まれています。アイテムのない空の辞書は、次のように2つの中括弧で記述されます:{}。

キーは辞書内で一意ですが、値は一意でない場合があります。ディクショナリの値は任意のタイプにすることができますが、キーは文字列、数値、タプルなどの不変のデータ型である必要があります。

辞書の値へのアクセス

辞書要素にアクセスするには、キーと一緒に使い慣れた角括弧を使用して、その値を取得できます。以下は簡単な例です-

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

上記のコードを実行すると、次の結果が得られます。

dict['Name']:  Zara
dict['Age']:  7

ディクショナリの一部ではないキーを使用してデータ項目にアクセスしようとすると、次のエラーが発生します。

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']

上記のコードを実行すると、次の結果が得られます。

dict['Alice']:
Traceback (most recent call last):
   File "test.py", line 4, in <module>
      print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

辞書の更新

以下の簡単な例に示すように、新しいエントリまたはキーと値のペアを追加するか、既存のエントリを変更するか、既存のエントリを削除することで、辞書を更新できます。

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

上記のコードを実行すると、次の結果が得られます。

dict['Age']:  8
dict['School']:  DPS School

辞書要素を削除する

個々の辞書要素を削除するか、辞書の内容全体をクリアすることができます。1回の操作で辞書全体を削除することもできます。

辞書全体を明示的に削除するには、 delステートメント。以下は簡単な例です-

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
del dict ;        # delete entire dictionary

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

これにより、次の結果が得られます。後に例外が発生することに注意してくださいdel dict 辞書はもう存在しません-

dict['Age']:
Traceback (most recent call last):
   File "test.py", line 8, in <module>
      print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

Note − del()メソッドについては、次のセクションで説明します。

辞書キーのプロパティ

ディクショナリ値に制限はありません。それらは、標準オブジェクトまたはユーザー定義オブジェクトのいずれかの任意のPythonオブジェクトにすることができます。ただし、同じことはキーには当てはまりません。

辞書キーについて覚えておくべき2つの重要なポイントがあります-

(a)キーごとに複数のエントリを使用することはできません。つまり、重複するキーは許可されません。割り当て中に重複キーが検出されると、最後の割り当てが優先されます。例-

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']

上記のコードを実行すると、次の結果が得られます。

dict['Name']:  Manni

(b)キーは不変でなければなりません。つまり、文字列、数字、またはタプルを辞書キーとして使用できますが、['key']のようなものは許可されていません。以下は簡単な例です-

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']

上記のコードを実行すると、次の結果が得られます。

Traceback (most recent call last):
   File "test.py", line 3, in <module>
      dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable