Python 辞書のvalues()入門|値の一覧を取得する基本

Pythonの辞書のvalues()メソッドの使い方を分かりやすく解説。辞書から値の一覧を取得する方法、実践的な活用例、他のメソッドとの組み合わせを具体例で学習できます。

Learning Next 運営
17 分で読めます

Python 辞書のvalues()入門|値の一覧を取得する基本

辞書の値だけを取り出したいと思ったことはありませんか?

みなさん、Pythonで辞書を使っているとき、こんな場面に遭遇したことはありませんか?

「キーと値のペアから、値だけを一覧で取得したい」 「辞書の全ての値を使って計算をしたい」 「値だけでループ処理をしたい」

実は、Pythonのvalues()メソッドを使うことで、辞書の値だけを簡単に取得できるんです。

この記事では、辞書のvalues()メソッドの基本的な使い方から実践的な活用方法まで、初心者にも分かりやすく解説します。 具体的なコード例とともに、段階的に理解できるよう丁寧に説明しますね!

values()メソッドって何?基本概念から理解しよう

values()メソッドは、辞書からすべての値を取得するPythonの組み込みメソッドです。

辞書内のキーと値のペアから、値の部分だけを抽出できます。 戻り値は辞書ビューオブジェクトで、辞書の値を反復処理できます。

最初の例を見てみよう

最も基本的なvalues()メソッドの使用例を確認してみましょう。

# 基本的な辞書
student_grades = {
"田中": 85,
"佐藤": 92,
"鈴木": 78,
"高橋": 95
}
# values()メソッドで値を取得
grades = student_grades.values()
print(grades) # dict_values([85, 92, 78, 95])

このコードでは、student_grades辞書から成績の値だけを取得しています。

values()メソッドを呼び出すと、dict_valuesオブジェクトが返されます。 この中には、辞書のすべての値が含まれているんです。

戻り値の型について詳しく見よう

values()メソッドは、dict_valuesオブジェクトを返します。

student_grades = {"田中": 85, "佐藤": 92, "鈴木": 78}
grades = student_grades.values()
print(type(grades)) # <class 'dict_values'>
print(grades) # dict_values([85, 92, 78])

dict_valuesオブジェクトは反復可能なオブジェクトです。

つまり、for文で繰り返し処理ができたり、リストに変換したりできます。 直接リストではありませんが、リストのように扱えるのが便利なポイントですね。

リストに変換して活用してみよう

list()関数を使った変換

dict_valuesオブジェクトをリストに変換するには、list()関数を使います。

student_grades = {"田中": 85, "佐藤": 92, "鈴木": 78}
# リストに変換
grades_list = list(student_grades.values())
print(grades_list) # [85, 92, 78]
print(type(grades_list)) # <class 'list'>

リストに変換すると、インデックスでアクセスできるようになります。

grades_list[0]のように、特定の位置の値を取得することも可能です。

変換後の活用例

リストに変換後は、様々な数値計算や統計処理が可能になります。

prices = {"りんご": 100, "バナナ": 80, "オレンジ": 120}
# 値をリストに変換
price_list = list(prices.values())
# 最大値・最小値の取得
max_price = max(price_list)
min_price = min(price_list)
print(f"最高価格: {max_price}円") # 最高価格: 120円
print(f"最低価格: {min_price}円") # 最低価格: 80円
# 合計と平均の計算
total_price = sum(price_list)
average_price = total_price / len(price_list)
print(f"合計価格: {total_price}円") # 合計価格: 300円
print(f"平均価格: {average_price}円") # 平均価格: 100.0円

このコードでは、商品価格の最大値、最小値、合計、平均を計算しています。

max()min()sum()関数を使うことで、簡単に統計情報を取得できます。

for文で繰り返し処理をしてみよう

基本的なfor文での使用

values()メソッドは、for文で直接使用できます。

student_scores = {
"数学": 85,
"英語": 92,
"国語": 78,
"理科": 88
}
# 値を順次処理
print("各科目の点数:")
for score in student_scores.values():
print(f"点数: {score}")

このコードを実行すると、以下のような出力が得られます。

各科目の点数: 点数: 85 点数: 92 点数: 78 点数: 88

for score in student_scores.values():の部分で、辞書の値を一つずつ取得しています。

条件処理との組み合わせ

values()メソッドを条件処理と組み合わせることも可能です。

test_scores = {"田中": 85, "佐藤": 92, "鈴木": 78, "高橋": 95, "渡辺": 83}
# 80点以上の点数を抽出
high_scores = []
for score in test_scores.values():
if score >= 80:
high_scores.append(score)
print(high_scores) # [85, 92, 95, 83]
# 80点未満の人数をカウント
low_score_count = 0
for score in test_scores.values():
if score < 80:
low_score_count += 1
print(f"80点未満の人数: {low_score_count}人") # 80点未満の人数: 1人

このコードでは、特定の条件に合う値を抽出したり、カウントしたりしています。

条件分岐を組み合わせることで、より複雑なデータ処理が可能になります。

実際の開発で役立つ使用例を見てみよう

売上データの集計処理

values()メソッドは、売上データなどの集計処理によく使用されます。

sales_data = {
"1月": 250000,
"2月": 180000,
"3月": 320000,
"4月": 290000
}
# 総売上の計算
total_sales = sum(sales_data.values())
print(f"総売上: {total_sales:,}円") # 総売上: 1,040,000円
# 平均売上の計算
average_sales = total_sales / len(sales_data)
print(f"平均売上: {average_sales:,}円") # 平均売上: 260,000円
# 最高売上月と最低売上月
sales_list = list(sales_data.values())
max_sales = max(sales_list)
min_sales = min(sales_list)
print(f"最高売上: {max_sales:,}円") # 最高売上: 320,000円
print(f"最低売上: {min_sales:,}円") # 最低売上: 180,000円

このコードでは、月別売上データから様々な統計情報を計算しています。

sum()関数で総売上を、max()min()関数で最高・最低売上を求めています。

在庫管理システム

商品の在庫管理でもvalues()メソッドが活用できます。

inventory = {
"商品A": 50,
"商品B": 0,
"商品C": 25,
"商品D": 100,
"商品E": 0
}
# 在庫切れの商品数をカウント
out_of_stock = 0
for stock in inventory.values():
if stock == 0:
out_of_stock += 1
print(f"在庫切れ商品数: {out_of_stock}個") # 在庫切れ商品数: 2個
# 総在庫数の計算
total_stock = sum(inventory.values())
print(f"総在庫数: {total_stock}個") # 総在庫数: 175個
# 在庫がある商品の平均在庫数
available_stocks = [stock for stock in inventory.values() if stock > 0]
average_stock = sum(available_stocks) / len(available_stocks)
print(f"平均在庫数: {average_stock:.1f}個") # 平均在庫数: 58.3個

この例では、在庫データから在庫切れ商品数や総在庫数を計算しています。

リスト内包表記も使って、在庫がある商品だけの平均在庫数も求めています。

複雑なデータ構造での使用

複数の辞書を組み合わせた処理も可能です。

employees = {
"emp001": {"name": "田中", "salary": 350000, "department": "営業"},
"emp002": {"name": "佐藤", "salary": 420000, "department": "開発"},
"emp003": {"name": "鈴木", "salary": 380000, "department": "営業"}
}
# 全従業員の給与合計
total_salary = 0
for employee_data in employees.values():
total_salary += employee_data["salary"]
print(f"給与総額: {total_salary:,}円") # 給与総額: 1,150,000円
# 部署別の人数カウント
department_count = {}
for employee_data in employees.values():
dept = employee_data["department"]
department_count[dept] = department_count.get(dept, 0) + 1
print(f"部署別人数: {department_count}") # 部署別人数: {'営業': 2, '開発': 1}

このコードでは、従業員データから給与総額を計算し、部署別の人数もカウントしています。

ネストした辞書でも、values()メソッドを使って効率的に処理できるんです。

他のメソッドとの組み合わせを理解しよう

keys()メソッドとの併用

keys()メソッドと組み合わせて使用することもできます。

product_prices = {"りんご": 100, "バナナ": 80, "オレンジ": 120}
# キーと値を同時に処理
keys_list = list(product_prices.keys())
values_list = list(product_prices.values())
print("商品一覧:")
for i in range(len(keys_list)):
print(f"{keys_list[i]}: {values_list[i]}円")
# より簡潔な書き方(zip関数を使用)
print("
商品一覧(zip使用):")
for product, price in zip(product_prices.keys(), product_prices.values()):
print(f"{product}: {price}円")

このコードでは、キーと値を並行して処理しています。

zip()関数を使うことで、より簡潔に書くことができます。

items()メソッドとの使い分け

items()メソッドとvalues()メソッドの使い分けも重要です。

scores = {"数学": 85, "英語": 92, "国語": 78}
# values()メソッド - 値のみが必要な場合
average_score = sum(scores.values()) / len(scores)
print(f"平均点: {average_score}") # 平均点: 85.0
# items()メソッド - キーと値の両方が必要な場合
print("科目別点数:")
for subject, score in scores.items():
print(f"{subject}: {score}点")
# values()メソッド - 特定の条件の値のみ処理
high_scores = [score for score in scores.values() if score >= 85]
print(f"85点以上の点数: {high_scores}") # 85点以上の点数: [85, 92]

使い分けの基準:

  • 値のみが必要な場合:values()メソッド
  • キーと値の両方が必要な場合:items()メソッド
  • キーのみが必要な場合:keys()メソッド

パフォーマンスと注意点を理解しよう

メモリ効率について

values()メソッドは、メモリ効率が良い設計になっています。

large_dict = {f"key_{i}": i * 10 for i in range(10000)}
# dict_valuesオブジェクトはメモリ効率が良い
values_view = large_dict.values() # 元の辞書を参照
# リストに変換するとメモリを多く使用
values_list = list(large_dict.values()) # 新しいリストを作成
print(f"辞書のサイズ: {len(large_dict)}")
print(f"values_viewの型: {type(values_view)}")
print(f"values_listの型: {type(values_list)}")

dict_valuesオブジェクトは元の辞書を参照するだけなので、メモリ使用量が少なくて済みます。

大量のデータを扱う場合は、必要に応じてリストに変換することをおすすめします。

辞書の変更による影響

辞書を変更すると、values()の結果も変更されます。

data = {"a": 1, "b": 2}
values_view = data.values()
print(list(values_view)) # [1, 2]
# 辞書を変更
data["c"] = 3
print(list(values_view)) # [1, 2, 3]
# 値を更新
data["a"] = 10
print(list(values_view)) # [10, 2, 3]

dict_valuesオブジェクトは、元の辞書と連動しています。

辞書の変更がvalues()の結果に反映されることを理解しておきましょう。

まとめ

Pythonの辞書のvalues()メソッドは、辞書から値の一覧を取得する基本的で重要なメソッドです。

この記事で学んだ重要なポイント:

  • values()メソッドで辞書の値だけを簡単に取得できる
  • dict_valuesオブジェクトとリストの使い分けが重要
  • for文や統計関数と組み合わせて様々な処理が可能
  • 集計処理、在庫管理、データ分析など実践的な場面で活用できる
  • 他のメソッド(keys、items)との適切な使い分けが効果的

プログラミングでは、データから必要な部分だけを効率的に取り出すスキルが重要です。

values()メソッドを使いこなすことで、より効率的で読みやすいPythonプログラムを書けるようになります。 ぜひ実際のプロジェクトで活用してみてください!

関連記事