データ構造-辞書のメソッド、関数
記事の内容
この記事では、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 個