Python 辞書(Dictionary)

辞書はもう一つの可変コンテナモデルであり、任意の型のオブジェクトを格納できます。

辞書の各キーと値はkey:valueコロンで:区切られ、各キーと値のペアはカンマで,区切られ、辞書全体は波括弧で囲みます{}中、形式は以下の通りです:

d = {key1 : value1, key2 : value2 }

注意:dictPython のキーワードや組み込み関数として、変数名に使用することはお勧めしません。dict。

キーは通常一意です。繰り返した場合、最後のキーと値のペアが前のものを置き換えます。値は一意である必要はありません。

>>> tinydict = {'a': 1, 'b': 2, 'b': '3'}
>>> tinydict['b']
'3'
>>> tinydict
{'a': 1, 'b': '3'}

値は任意のデータ型を取ることができますが、キーは文字列、数値、タプルなどの不変である必要があります。

簡単な辞書の例:

tinydict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

このように辞書を作成することもできます:

tinydict1 = { 'abc': 456 } tinydict2 = { 'abc': 123, 98.6: 37 }

辞書の値にアクセスする

対応するキーをおなじみの角括弧に入れます。以下の例のとおりです:

例

#!/usr/bin/python tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print "tinydict['Name']: ", tinydict['Name'] print "tinydict['Age']: ", tinydict['Age']

上記の例の出力結果:

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

辞書にないキーでデータにアクセスすると、次のようなエラーが出力されます:

例

#!/usr/bin/python tinydict = {'Name': 'サンプル', 'Age': 7, 'Class': 'First'} print "tinydict['Alice']: ", tinydict['Alice']

上記の例の出力結果:

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


辞書の変更

辞書に新しい内容を追加する方法は、新しいキー/値のペアを追加することです。既存のキー/値のペアを変更または削除する方法は、以下の例のとおりです:

例

#!/usr/bin/python # -*- coding: UTF-8 -*- tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} tinydict['Age'] = 8 # 更新 tinydict['School'] = "サンプル" # 追加 print "tinydict['Age']: ", tinydict['Age'] print "tinydict['School']: ", tinydict['School']
上記の例の出力結果:
tinydict['Age']:  8
tinydict['School']:  サンプル


辞書の要素を削除する

単一の要素を削除することも、辞書を空にすることもできます。空にするには1つの操作だけ必要です。

辞書を明示的に削除するにはdelコマンドを使います。以下の例のとおりです:

例

#!/usr/bin/python # -*- coding: UTF-8 -*- tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} del tinydict['Name'] # キーが'Name'のエントリを削除 tinydict.clear() # 辞書のすべてのエントリをクリア del tinydict # 辞書を削除 print "tinydict['Age']: ", tinydict['Age'] print "tinydict['School']: ", tinydict['School']

しかし、del使用後は辞書が存在しなくなるため、例外が発生します:

tinydict['Age']: 
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    print "tinydict['Age']: ", tinydict['Age'] 
NameError: name 'tinydict' is not defined

注:del() メソッドについては後で説明します。


辞書のキーの特性

辞書の値は制限なく任意のPythonオブジェクトを取ることができます。標準のオブジェクトでもユーザー定義のオブジェクトでも構いませんが、キーはそうはいきません。

覚えておくべき重要な点が2つあります:

1)同じキーが2回出現することはできません。作成時に同じキーが2回代入された場合、後者の値が記憶されます。以下の例のとおりです:

例

#!/usr/bin/python tinydict = {'Name': 'サンプル', 'Age': 7, 'Name': 'Manni'} print "tinydict['Name']: ", tinydict['Name']

上記の例の出力結果:

tinydict['Name']:  Manni

2)キーは不変でなければならないため、数値、文字列、タプルを使用できますが、リストは使用できません。以下の例のとおりです:

例

#!/usr/bin/python tinydict = {['Name']: 'Zara', 'Age': 7} print "tinydict['Name']: ", tinydict['Name']

上記の例の出力結果:

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


辞書の組み込み関数&メソッド

Pythonの辞書には次の組み込み関数が含まれています:

番号関数と説明
1cmp(dict1, dict2)
2つの辞書要素を比較します。
2len(dict)
辞書の要素数、すなわちキーの総数を計算します。
3str(dict)
辞書の印字可能な文字列表現を出力します。
4type(variable)
入力された変数の型を返します。変数が辞書の場合は辞書型を返します。

Pythonの辞書には次の組み込みメソッドが含まれています:

番号関数と説明
1dict.clear()
辞書内のすべての要素を削除します
2dict.copy()
辞書の浅いコピーを返します
3dict.fromkeys(seq[, val])
新しい辞書を作成し、シーケンス seq の要素を辞書のキーとし、val を辞書のすべてのキーに対応する初期値とします
4dict.get(key, default=None)
指定したキーの値を返します。キーが辞書にない場合はdefault値を返します
5dict.has_key(key)
キーが辞書dictに存在すればtrueを返し、それ以外はfalseを返します。Python3 ではサポートされていません。
6dict.items()
リストとして反復可能な(キー, 値) タプルの配列を返します。
7dict.keys()
リストとして辞書のすべてのキーを返します。
8dict.setdefault(key, default=None)
get() と似ていますが、キーが辞書に存在しない場合は、キーを追加して値をdefaultに設定します
9dict.update(dict2)
辞書dict2のキー/値のペアをdictに更新します
10dict.values()
リストとして辞書のすべての値を返します。
11pop(key[,default])
辞書の指定されたキー key に対応する値を削除し、戻り値は削除された値です。key値は必ず指定する必要があります。そうでない場合はdefault値を返します。
12 popitem()
辞書の最後のキーと値のペアを返して削除します。
その他の拡張