🦍
辞書からの取り出し keys(),values(),items()
今回はkeys(),values(),items()について解説します。
これらはpythonの辞書型の変数に対して使用される関数です。
以下例文です。
keys()
my_dict = {"apple": 1, "banana": 2, "cherry": 3}
keys = my_dict.keys()
print(keys)
"dict_keys(['apple', 'banana', 'cherry'])"
values()
my_dict = {"apple": 1, "banana": 2, "cherry": 3}
values = my_dict.values()
print(values)
"dict_values([1, 2, 3])"
items()
my_dict = {"apple": 1, "banana": 2, "cherry": 3}
items = my_dict.items()
print(items)
"dict_items([('apple', 1), ('banana', 2), ('cherry', 3)])"
--
ここで注意したいのは、これらが返すdict_~という型はpythonのビューオブジェクトと呼ばれ、
通常のlistとは異なる性質を持ちます。
通常のリストとして扱いたいときは、list()で変換することができます。
ビューオブジェクトの性質
ここで、ビューオブジェクトの性質について説明します。
動的である:
ビューオブジェクトは辞書の現在の状態を反映します。つまり、ビューオブジェクトを作成した後に辞書の内容が変更されると、そのビューオブジェクトも更新されます。
反復可能:
ビューオブジェクトはイテラブル(反復可能)であり、forループなどで要素を一つずつ取り出すことができます。
my_dict = {"apple": 1, "banana": 2, "cherry": 3}
items = my_dict.items()
for key in keys:
print(key)
"apple"
"banana"
"cherry"
メモリ効率が良い:
ビューオブジェクトは元の辞書のデータを参照しており、新しいデータを生成しないため、メモリへの負荷が小さいです。
リストと異なる点
インデクシング:
dict_keys, dict_values, dict_items オブジェクトはインデクシングをサポートしていません。
これは、keys[0]のような形でアクセスできないことを指します。
my_dict = {"apple": 1, "banana": 2, "cherry": 3}
items = my_dict.items()
print(items[0])
"TypeError!"
"'dict_keys' object is not subscriptable"
変更不可能:
ビューオブジェクトはイミュータブル(変更不可能)です。
そのため、要素の追加、削除、変更などができません。
my_dict = {"apple": 1, "banana": 2, "cherry": 3}
my_dict.items = {"banana": 1, "banana": 2, "banana": 3}
"AttributeError!"
"'dict' object attribute 'items' is read-only"
ビューオブジェクトの説明は以上です。
その特性から、辞書の内容を調べたり、辞書の内容を反復したい時に使用されます。
それでは今回はここまでです!最後まで読んでくださりありがとうございました!🦍
Discussion