Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの辞書values()メソッド徹底解説:値の取得から活用まで

Pythonの辞書(ディクショナリ)におけるvalues()メソッドは、辞書に格納されているすべての値を含むオブジェクトを返します。辞書のキーではなく値だけを扱いたい場合に非常に便利なメソッドです。また、後から辞書の内容を変更すると、values()が返すデータも自動的に新しい状態へ反映されます。

Pythonで開発を行っていると、データを辞書として保存したい場面はよくあります。たとえば、レストラン管理システムを構築している場合、各注文の情報を辞書に格納することになるでしょう。

そこで疑問になるのが「辞書に保存した値はどうやって取り出せばいいのか?」という点です。ここで活躍するのが、Python辞書のvalues()メソッドです。このメソッドを使うと、辞書に格納されたすべての値をまとめて取得できます。

本記事では、具体的なコード例を交えながら、Python辞書の基本とvalues()メソッドの使い方について詳しく解説します。

Python辞書のvalues()メソッドとは

Pythonのvalues()メソッドは、辞書内のすべての値を返します。引数は一切受け取らず、辞書名の直後に指定して呼び出します。

まずは基本的な構文を見てみましょう。

dict_name = { "name1": "value1" }
dict_name.values()

ご覧のとおり、この組み込みメソッドはパラメータを受け取りません。代わりに、辞書名の末尾に直接付けて使用します。

dict_valuesオブジェクトについて

注意すべき点として、values()はリストではなくdict_valuesという特殊なオブジェクトを返します。通常のリストとして扱いたい場合は、Pythonのlist()メソッドを使って変換できます。

dict_name = { "name1": "value1" }
new_list = list(dict_name.values())

この例では、変数new_listには、辞書内のすべての値を含む通常のリストが代入されます。最初の構文で生成されるものとは異なり、これはdict_valuesオブジェクトではありません。

もちろん、dict_valuesオブジェクトのまま保持し、そのまま反復処理(イテレーション)を行うことも可能です。

values()メソッドは、Pythonのforループと組み合わせて使われることが多いメソッドです。forループと併用すれば、辞書内のすべての値を順番に処理できます。たとえば、「辞書の各キーに対応する値が存在するかどうか」を確認するといった使い方が考えられます。

values()メソッドの実践例:学生情報の取得

ここで、学校の生徒に関する情報を格納したPython辞書を例に考えてみましょう。

simon = {
	'name': 'Simon Henderson',
	'birthday': '02/09/2002',
	'class': 'Senior Year',
	'honor_roll': True
}

この辞書では、nameがキーであり、その値はSimon Hendersonです。birthdayもキーで、値として02/09/2002が割り当てられています。さらに、生徒の学年や、学校の優等生リスト(honor roll)に登録されているかどうかの情報も格納されています。

さて、辞書に保存されたすべての値を一覧として取得したい場合はどうすればよいのでしょうか。値の一覧を取得できれば、キーを意識せずに各値を操作できるようになります。これを実現するのがvalues()メソッドです。

simon = {
	'name': 'Simon Henderson',
	'birthday': '02/09/2002',
	'class': 'Senior Year',
	'honor_roll': True
}

print(simon.values())

このコードを実行すると、次のような結果が出力されます。

dict_values(['Simon Henderson', '02/09/2002', 'Senior Year', True])

まず、4つのキーと値を持つ辞書simonを宣言します。続いて、values()メソッドを使って辞書内の値を取得し、コンソールに出力しています。

実行結果として得られるのは、辞書内のすべての値を含むdict_valuesオブジェクトです。

forループによる値の反復処理

次に、辞書内のすべての値をコンソールに出力し、それぞれの値を改行して表示したいケースを考えてみましょう。こうした場面でforループが役立ちます。

forループを使えば、dict_valuesオブジェクト内の各要素を順番に取り出し、コンソールへ出力できます。

simon = {
	'name': 'Simon Henderson',
	'birthday': '02/09/2002',
	'class': 'Senior Year',
	'honor_roll': True
}

for item in simon.values():
	print(item)

このコードの出力結果は以下のとおりです。

Simon Henderson
02/09/2002
Senior Year
True

values()メソッドが辞書の値を含むオブジェクトを返すため、それをforループで反復処理できるわけです。

この例では、simon辞書内のすべての値を走査するforループを作成しました。ループが1回実行されるごとに、辞書から1つの値が取り出されてコンソールに出力され、すべての値を処理し終えるとループが終了します。

すべての値が出力された時点で、プログラムの実行は完了します。

forループを使ったデータ検証

forループとvalues()メソッドを組み合わせると、辞書内に空文字列が存在するかどうかを検証することもできます。

以下のコードを見てみましょう。

simon = {
	'name': 'Simon Henderson',
	'birthday': '02/09/2002',
	'class': 'Senior Year',
	'honor_roll': True
}

blank = 0
for item in simon.values():
	if item == "":
		blank += 1

print("There are {} blank values in the dictionary.".format(blank))

まず、blankという名前のPython変数を宣言しています。この変数は、辞書内にいくつの空の値があるかを記録するためのカウンターです。

forループの中でif文を使用し、各要素の値が空文字列「""」と一致するかどうかを判定しています。もし空文字列が見つかれば、変数blankに1が加算されます。

ループの実行が終わると、辞書内に空の値がいくつあったかが判明します。最後にformat()文を使って、空の値の個数を出力用の文字列に埋め込んでいます。

まとめ

Python辞書のvalues()メソッドを使うと、辞書内の値をまとめて取得できます。戻り値はdict_valuesオブジェクトとして整形され、forループを使えば各値をひとつずつ読み取って処理することが可能です。

本記事では、dictionary.values()メソッドを使って辞書の値を取得する方法を解説しました。これであなたも、Pythonのエキスパートのようにvalues()メソッドを活用できるはずです。

Pythonについてさらに学びたい方は、ぜひ「Python学習ガイド」も参考にしてください。厳選されたコース、学習のコツ、書籍、リソースなどを紹介しており、Pythonの知識を一段階引き上げるのに役立ちます。

  1. Pythonで辞書から値の大きい上位3件を取得する方法

    この記事では、Pythonの辞書(dict)から値が最も大きい上位3件の要素を取り出す方法について解説します。 課題 与えられた辞書から、値の大きい上位3件の「キー : 値」のペアを出力することを目標とします。 これを実現する主なアプローチとして、以下の2つの方法があります。 方法1:collections.Counter() を使う 標準ライブラリの collections モデルにある Counter クラスを利用すると、most_common() メソッドで簡単に上位N件を取得できます。 コード例 # collectionsモジュールをインポート from collections imp

  2. Pythonで辞書のすべての値を取得・出力する方法

    Pythonの辞書(dict)オブジェクトには、すべての値を簡単に取得できるvalues()メソッドが標準で用意されています。このメソッドを呼び出すと、辞書に格納された全ての値が dict_values オブジェクトとして返されます。values()メソッドを使う基本的な方法以下の例では、辞書 D1 のすべての値を values() メソッドで取得しています。戻り値はビューオブジェクトのため、リストとして扱いたい場合は list() 関数で変換すると便利です。>>> D1 = {1:a, 2:b, 3:c} >>> D1.values() dict_valu