おぼえがき

過ちては則ち改むるにうんぬんかんぬん

辞書型について(Python)

f:id:feci:20210726231508j:plain

Python3

 

Python3.8.5での辞書型について。

d = {'a'10'b'20}         #辞書型はブレイス(波括弧)
d1 = dict(a=10b=20)          #この形式でも辞書型を作れる
d2 = dict([('a',10),('b',20)]) #辞書型でリストの中にタプルを作ると…

print(d)                       #{'a': 10, 'b': 20}
print(d1)                      #{'a': 10, 'b': 20}
print(d2)                      #{'a': 10, 'b': 20} ← 通常の辞書型ができる
print(type(d))                 #<class 'dict'>
print(d['a'])                  #10
print(d['a'], d['b'])          #10 20

d['a'= 100                   #dのaキーに100というvalueを代入
d['b'= 'あいうえお'          #dのbキーあいうえおというvalueを代入
print(d)                       #{'a': 100, 'b': 'あいうえお'}

d['c'= 10                    #dの末尾に10が入ったcキーを追加
d[1= 30                      #キーは整数でもOK
print(d)                       #{'a': 100, 'b': 'あいうえお', 'c': 10, 1: 30}

辞書型はイテレータの一種です。

辞書型はdictionary型とも呼ばれます。

ちなみに、辞書型はPythonではdictというデータ型として表示されます。

 

dictを作るには、コロンの左辺にkey、右辺にvalueを指定して、それらの値をブレイス(波括弧)で囲います。

または、dict(key=value, ...) という形で記述してもdictを作ることはできます。

 

dictの値を呼び出したいときは、変数名の横にブラケット(角括弧)を書いてその中に呼び出したいvalueのkeyを記述すればOKです。

 

dictの値の再代入は、再代入したいkeyをブラケットで指定して、そこに=で任意のvalueを代入すればOKです。

 

dictの末尾に新しいkeyとvalueを追加したい場合はブラケット内に追加したいkeyを指定して、=のあとにそのkeyに入れたいvalueを書けばOKです。

 

 

辞書型のメソッドについて。

d = {'a'10'b'20}   #dictはブレイス(波括弧)で作る
d2 = {'a'12'c'30}

print(d.keys())     #dict_keys(['a', 'b'])
print(d.values())   #dict_values([10, 20])

print('a' in d)     #True ← 指定したkeyが存在すればTrue
print('z' in d)     #False ← 指定したkeyが存在しなければFalse

print(d['a'])       #10
print(d.get('a'))   #10
print(d[99])        #存在しないkeyを指定するとKeyErrorが出る
print(d.get(99))    #getメソッドだと存在しないkeyはNoneを返す

d.update(d2)        #dをd2でオーバーライド(上書き)
print(d)            #{'a': 12, 'b': 20, 'c': 30}

print(d.pop('a'))   #12 ← aのvalueを取り出す
print(d)            #{'b': 20, 'c': 30} ← 取り出されたkeyは消えている

del d['b']          #bというkeyと中のvalueを削除
print(d)            #{'c': 30}

del d               #dというオブジェクトを削除
print(d)            #変数dはもう存在しないのでNameErrorが出る

d2.clear()          #d2は消去せずにd2の中身だけをすべて消去する
print(d2)           #{} ← 空のdict型変数

print(type(d))      #<class 'dict'>
print(help(dict))  #dict型の情報が表示される

dect型に使えるメソッドには下記のようなものがあります。

 

 

〇keysメソッド

keysメソッドは、左辺に指定したdictの中にあるすべてのkeyを呼び出します。

 

〇valuesメソッド

valuesメソッドは、左辺に指定したdictの中にあるすべてのvalueを呼び出します。

 

〇in

inは右辺に指定したdict内に左辺で指定したkeyがあればTrueを返します。

右辺に指定したdict内に左辺で指定したkeyが存在しなければFalseを返します。

 

〇getメソッド

getメソッドは、左辺に指定したdictから右辺に指定したkeyのvalueを呼び出します。

もし指定したkeyがdict内に存在しない場合はNoneを返します(Errorは出ない)。

 

〇updateメソッド

updateメソッドは、左辺に指定したdectをパラメータの値でオーバーライド(上書き)します。

 

〇popメソッド

popメソッドは、左辺に指定したdictからパラメータで指定したkeyのvalueを取り出します。

このとき指定されたkeyと取り出されたvalueは、取り出した元のdictからは削除されています。

 

〇del

del文では、指定したdict内のkeyとvalueを削除します。

もし変数名そのものを指定した場合は、その変数そのものが削除されます。

 

〇clearメソッド

clearメソッドは、左辺に指定したdict内にあるすべてのkeyとvalueを削除します。

しかしdict自体は削除されないので、clearメソッドを実行したdictは、空のdictとしてオブジェクトは残り続けます。

 

 

dict型のコピーについて。

d = {'a'1}
d1 = d         #参照渡し
d['a'= 3

print(d1)      #3
print(d)       #3 ← dict型もリストと同じで参照渡しになる

d2 = {'a'1}
d3 = d2.copy() #値渡しになる
d3['a'= 5

print(d3)      #5
print(d2)      #1 ← copyメソッドで値渡しになっている

dict型もリストと同じように参照渡しになります。

これを参照渡しから値渡しに変えるには、リストと同じようにcopyメソッドを使います。

 

 

以上です。