Python3 辞書

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

辞書の各キーと値key=>valueのペアはコロンで:区切り、各ペアはカンマ(,)で区切り、辞書全体は中括弧{}で囲みます。形式は次のとおりです。

d = {key1 : value1, key2 : value2, key3 : value3 }

注意:dictPythonのキーワードおよび組み込み関数として、変数名をdict。

キーは一意である必要がありますが、値はその必要はありません。

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

簡単な辞書の実例:

tinydict = {'name': 'サンプル', 'likes': 123, 'url': 'www.example.com'}

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

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

空の辞書を作成

中括弧を使用{ }空の辞書を作成:

実例

# 中括弧 {} を使用して空の辞書を作成
emptyDict = {}
 
# 辞書を出力
print(emptyDict)
 
# 辞書の数を確認
print("Length:", len(emptyDict))
 
# 型を確認
print(type(emptyDict))

上記の実例の出力結果:

{}
Length: 0
<class 'dict'>

組み込み関数を使用dict()辞書を作成:

実例

emptyDict = dict()
 
# 辞書を出力
print(emptyDict)
 
# 辞書の数を確認
print("Length:",len(emptyDict))
 
# 型を確認
print(type(emptyDict))

上記の実例の出力結果:

{}
Length: 0
<class 'dict'>

辞書の値にアクセス

対応するキーを角括弧に入れます。次の実例のとおりです。

実例

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

上記の実例の出力結果:

tinydict['Name']:  サンプル
tinydict['Age']:  7

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

実例

#!/usr/bin/python3 tinydict = {'Name': 'サンプル', 'Age': 7, 'Class': 'First'} print ("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/python3 tinydict = {'Name': 'サンプル', 'Age': 7, 'Class': 'First'} tinydict['Age'] = 8 # Age を更新 tinydict['School'] = "サンプル" # 情報を追加 print ("tinydict['Age']: ", tinydict['Age']) print ("tinydict['School']: ", tinydict['School'])
上記の実例の出力結果:
tinydict['Age']:  8
tinydict['School']:  サンプル


辞書の要素を削除

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

辞書を明示的に削除するには del コマンドを使用します。次の実例のとおりです。

実例

#!/usr/bin/python3 tinydict = {'Name': 'サンプル', 'Age': 7, 'Class': 'First'} del tinydict['Name'] # キー 'Name' を削除 tinydict.clear() # 辞書を空にする del tinydict # 辞書を削除 print ("tinydict['Age']: ", tinydict['Age']) print ("tinydict['School']: ", tinydict['School'])

ただし、これは例外を引き起こします。del 操作を実行すると辞書が存在しなくなるためです:

Traceback (most recent call last):
  File "/サンプル-test/test.py", line 9, in <module>
    print ("tinydict['Age']: ", tinydict['Age'])
NameError: name 'tinydict' is not defined

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


辞書のキーの特性

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

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

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

実例

#!/usr/bin/python3 tinydict = {'Name': 'サンプル', 'Age': 7, 'Name': '小サンプル'} print ("tinydict['Name']: ", tinydict['Name'])

上記の実例の出力結果:

tinydict['Name']:  小サンプル

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

実例

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

上記の実例の出力結果:

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


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

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

番号関数と説明実例
1len(dict)
辞書の要素数、すなわちキーの総数を計算します。
>>> tinydict = {'Name': 'サンプル', 'Age': 7, 'Class': 'First'}
>>> len(tinydict)
3
2str(dict)
辞書を出力し、印刷可能な文字列表現を返します。
>>> tinydict = {'Name': 'サンプル', 'Age': 7, 'Class': 'First'}
>>> str(tinydict)
"{'Name': 'サンプル', 'Class': 'First', 'Age': 7}"
3type(variable)
入力された変数の型を返します。変数が辞書の場合は辞書型を返します。
>>> tinydict = {'Name': 'サンプル', 'Age': 7, 'Class': 'First'}
>>> type(tinydict)
<class 'dict'>

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

番号関数と説明
1dict.clear()
辞書内のすべての要素を削除します
2dict.copy()
辞書の浅いコピーを返します
3dict.fromkeys()
新しい辞書を作成し、シーケンス seq の要素を辞書のキーとし、val を辞書のすべてのキーに対応する初期値とします
4dict.get(key, default=None)
指定したキーの値を返します。キーが辞書にない場合は default で設定されたデフォルト値を返します
5key in dict
キーが辞書 dict にあれば true を返し、なければ false を返します
6dict.items()
リストとしてビューオブジェクトを返します
7dict.keys()
ビューオブジェクトを返します
8dict.setdefault(key, default=None)
get() と似ていますが、キーが辞書に存在しない場合は、キーを追加して値を default に設定します
9dict.update(dict2)
辞書 dict2 のキー/値ペアを dict に更新します
10dict.values()
ビューオブジェクトを返します
11dict.pop(key[,default])
辞書の key(キー)に対応する値を削除し、削除された値を返します。
12 dict.popitem()
辞書の最後のキーと値のペアを返して削除します。
その他の拡張