Python - 文法 - 辞書型


クラウディア 


1. 概要
2. 宣言・初期化
3. 追加
4. 削除
5. 更新
6. クリア
7. ループ
8. キーの有無
9. ソート
10. 参考サイト

1. 概要

 「Python」には、辞書型(dictionary)というオブジェクトがあります。  わたしの理解では、ハッシュ・・・みたいなものなのですが・・・間違っていたらごめんなさい。  以下、この時点(2020年6月8日)、「Python3.7」を利用した、わたしの理解です。

2. 宣言・初期化

 辞書型は、キーと値がセットになっております。  単に宣言して初期化するには。

dic = {}
 値つきで、初期化するには。
dic = {  'key01' : 'value01', 'key02' : 'value02', 'key03' : 'value03'  }

print(dic)

 てな感じになります。  上記を実行すると、下記の結果が得られます。

{'key01': 'value01', 'key02': 'value02', 'key03': 'value03'}

3. 追加

 簡単に追加をするならば。
dic = {  'key01' : 'value01' }

dic['key02'] = 'value02'

print(dic)

 てな感じで、キーに値を代入します。  上記を実行すると、下記の結果が得られます。

{'key01': 'value01', 'key02': 'value02'}

4. 削除

 削除には、「del」という関数(?)を使用します。
dic = {  'key01' : 'value01', 'key02' : 'value02', 'key03' : 'value03'  }

print(dic)

dic['key02'] = 'value04'

print(dic)


 上記を実行すると、下記の結果が得られます。

{'key01': 'value01', 'key02': 'value02', 'key03': 'value03'}
{'key01': 'value01', 'key02': 'value04', 'key03': 'value03'}

5. 更新

 更新には。

辞書[キー] = 値
 の形式か。

辞書1.update(辞書2)
 の形式があります。  両者とも元の辞書に、同じキーがあれば、値を上書きして、なければ、新規のキー・値のセットを追加します。
dic = {  'key01' : 'value01', 'key02' : 'value02', 'key03' : 'value03'  }

print(dic)

dic['key02'] = 'value04'

print(dic)


 上記を実行すると、下記の結果が得られます。

{'key01': 'value01', 'key02': 'value02', 'key03': 'value03'}
{'key01': 'value01', 'key02': 'value04', 'key03': 'value03'}
dic = {  'key01' : 'value01', 'key02' : 'value02', 'key03' : 'value03'  }

print(dic)

dic.update({  'key01' : 'value01', 'key02' : 'value04', 'key03' : 'value03', 'key05' : 'value05' })

print(dic)


 上記を実行すると、下記の結果が得られます。

{'key01': 'value01', 'key02': 'value02', 'key03': 'value03'}
{'key01': 'value01', 'key02': 'value04', 'key03': 'value03', 'key05': 'value05'}

6. クリア

 辞書をクリアするのは、「clear」という関数(?)一発です。
dic = {  'key01' : 'value01', 'key02' : 'value02', 'key03' : 'value03'  }

print(dic)

dic.clear()
print(dic)

 上記を実行すると、下記の結果が得られます。

{'key01': 'value01', 'key02': 'value02', 'key03': 'value03'}
{}

7. ループ

 キー、値、キー・値のセット、どれでもループさせる方法があります。
dic = {  'key01' : 'value01', 'key02' : 'value02', 'key03' : 'value03'  }


print("keys")

for key in dic.keys():
    print(key)


print("\nvalues")

for value in dic.values():
    print(value)


print("\nitems")

for key, value in dic.items():
    print(key, value)

 上記を実行すると、下記の結果が得られます。

{'key01': 'value01', 'key02': 'value02', 'key03': 'value03'}
{}

8. キーの有無

 オブジェクト内にキーが存在するかを確認するには。

キー in 辞書
 という形式を使用します。  否定形(キーが存在しない)は、「not in」を使用します。
dic = {  'key01' : 'value01' }

print('key01' in dic)
print('key02' in dic)
print('key01' not in dic)
print('key02' not in dic)

 上記を実行すると、下記の結果が得られます。

True
False
False
True

9. ソート

 「sort」というメソッドを持ってはいるようなのですが・・・。  組み込み関数、「sorted」を使う方がやりやすい。  「sorted」の引数に、辞書型の「keys」「values」「items」を渡すことにより。  それぞれ、キーをソートしたリスト、値をソートしたリスト、キーでソートした辞書を返すことになります。  値でソートした辞書を得るには、なんかラムダ式という、難しいものを使うようなので、今(2022年6月15日)のわたしには、書けないのだ。
dic = {  'key1' : 'valE', 'key3' : 'valC', 'key2' : 'valD', 'key4' : 'valB', 'key5' : 'valA',  }

print(dic)
print(sorted(dic.keys()))
print(sorted(dic.values()))
print(sorted(dic.items()))

 上記を実行すると、下記の結果が得られます。

{'key1': 'valE', 'key3': 'valC', 'key2': 'valD', 'key4': 'valB', 'key5': 'valA'}
['key1', 'key2', 'key3', 'key4', 'key5']
['valA', 'valB', 'valC', 'valD', 'valE']
[('key1', 'valE'), ('key2', 'valD'), ('key3', 'valC'), ('key4', 'valB'), ('key5', 'valA')]

10. 参考サイト

 本ページは、下記のサイトを参考にさせていただきました。
組み込み型 — Python 3.7.7 ドキュメント マッピング型 --- dict