データ構造-辞書のメソッド、関数

記事の内容

 この記事では、Python組み込みのデータ構造の1つである辞書オブジェクトを操作するメソッドを紹介します。
 ざっと眺めてみてどんなことができそうか確認したら、索引としてご利用ください。

***わからない用語があるときは索引ページへ***

1.辞書オブジェクトで使えるメソッド

 辞書オブジェクトで使える主なメソッドをサンプルコードで紹介します。

1.1.keys()

 辞書オブジェクトのすべてのキーを抜き出し、イテラブルなオブジェクトである"dict_keys"オブジェクトで返します。

##会員カード
member_card1 = {
   "名前": "山田花子",
   "性別": "女性",
   "メールアドレス": "yamada_hanako@example.com"
}
print("元の辞書:", member_card1)

##辞書オブジェクトのキーを抜き出す
keys = member_card1.keys()
print("元の辞書のキー:", keys)

出力結果

元の辞書: {'名前': '山田花子', '性別': '女性', 'メールアドレス': 'yamada_hanako@example.com'} 
元の辞書のキー: dict_keys(['名前', '性別', 'メールアドレス'])

※1)dict_keysオブジェクトが代入された変数keysは、リストオブジェクトと同じイテラブルなオブジェクトなので、"keys[index]"の形式でインデックスを指定し、個別の要素を抜き出すことができます。
※2)"key_list = list(keys)"のように、リスト型オブジェクトにキャストすることも可能です。

1.2.values()

 辞書オブジェクトのすべての値を抜き出し、イテラブルなオブジェクトである"dict_values"オブジェクトで返します。

##会員カード
member_card1 = {
   "名前": "山田花子",
   "性別": "女性",
   "メールアドレス": "yamada_hanako@example.com"
}
print("元の辞書:", member_card1)

##辞書オブジェクトの値を抜き出す
vals = member_card1.values()
print("元の辞書の値:", vals)

実行結果

元の辞書: {'名前': '山田花子', '性別': '女性', 'メールアドレス': 'yamada_hanako@example.com'}
元の辞書の値: dict_values(['山田花子', '女性', 'yamada_hanako@example.com'])

1.3.items()

 辞書オブジェクトのすべての要素を抜き出し、イテラブルなオブジェクトである"dict_items"オブジェクトで返します。

##会員カード
member_card1 = {
   "名前": "山田花子",
   "性別": "女性",
   "メールアドレス": "yamada_hanako@example.com"
}
print("元の辞書:", member_card1)
##辞書オブジェクトの要素を抜き出す
items = member_card1.items()
print("元の辞書の値:", items)

実行結果。
出力を見るとわかるように、dict_itemsの各要素は、
 (<キー>, <値>)
のタプルオブジェクトになっています。

元の辞書: {'名前': '山田花子', '性別': '女性', 'メールアドレス': 'yamada_hanako@example.com'}
元の辞書の値: dict_items([('名前', '山田花子'), ('性別', '女性'), ('メールアドレス', 'yamada_hanako@example.com')]

1.4.update(dict)

 辞書オブジェクトdictを元の辞書オブジェクトに連結する。updateメソッドは、自身のオブジェクトを書き換えます。

 #辞書の連結 

##会員カード
member_card1 = {
   "名前": "山田花子",
   "性別": "女性"
}
print("元の辞書:", member_card1)
 #連結する辞書 
add_items ={
   "年齢": 50,
   "メールアドレス": "yamada_hanako@example.com"
}
print("連結する辞書:", add_items, "\n")
 #連結された辞書 
member_card1.update(add_items)
print("連結された辞書:", member_card1)

出力結果

元の辞書: {'名前': '山田花子', '性別': '女性'}
連結する辞書: {'年齢': 50, 'メールアドレス': 'yamada_hanako@example.com'} 
連結された辞書: {'名前': '山田花子', '性別': '女性', '年齢': 50, 'メールアドレス': 'yamada_hanako@example.com'}

1.5.pop(key)

 削除する要素のkeyを指定して、要素を削除する。

##要素の削除
member_card1 = {
   "名前": "山田花子",
   "性別": "女性",
   "メールアドレス": "yamada_hanako@example.com",
   "いらない": 0
}
print("元の辞書:", member_card1)

##popメソッドでkeyを指定した削除
member_card1.pop("いらない")
print("いらない要素を削除:", member_card1)

実行結果

元の辞書: {'名前': '山田花子', '性別': '女性', 'メールアドレス': 'yamada_hanako@example.com', 'いらない': 0}
いらない要素を削除: {'名前': '山田花子', '性別': '女性', 'メールアドレス': 'yamada_hanako@example.com'}

1.6.copy()

 辞書オブジェクトのデータをコピーし、値渡しする。辞書オブジェクトの代入文や関数へのデータ引き渡しは、参照渡しである。

##メンバーカード
##copyして値渡し
member_card1 = {
   "名前": "山田鼻子",
   "性別": "女性",
   "メールアドレス": "yamada_hanako@example.com"
}

##コピーして修正
member_card2 = member_card1.copy()
member_card2["名前"] = "山田花子"

##値渡しをしたので元のデータは書き換わらない
print("元の辞書:", member_card1)
print("修正した辞書:", member_card2)

 出力結果。
 copy()メソッドを使ってmember_card2へ値渡しをした後に誤字を修正したので、元のmember_card1のデータは書き換わらない。

元の辞書: {'名前': '山田鼻子', '性別': '女性', 'メールアドレス': 'yamada_hanako@example.com'}
修正した辞書: {'名前': '山田花子', '性別': '女性', 'メールアドレス': 'yamada_hanako@example.com'}

2.辞書関連の組み込み関数

2.1.len(data_structure_obj)

 リスト、辞書、タプルなどのデータ構造のオブジェクトを引数にとって、要素数を返す。

##要素数を数えて返す
##会員カード
member_card1 = {
   "名前": "山田鼻子",
   "性別": "女性",
   "メールアドレス": "yamada_hanako@example.com"
}
print("元の辞書:", member_card1, "\n")

print("辞書の要素数:", len(member_card1), "個")

実行結果

元の辞書: {'名前': '山田鼻子', '性別': '女性', 'メールアドレス': 'yamada_hanako@example.com'} 
辞書の要素数: 3

この記事が気に入ったらサポートをしてみませんか?