Python の辞書の各値に関数を適用する方法

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Python の辞書(dictionary)は、キーと値のペアを格納してアクセスすることができる強力なデータ構造です。このチュートリアルでは、Python の辞書内の各値に関数を適用する方法を探り、複雑なデータ変換を行い、データから新たな洞察を引き出すことができるようにします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/FunctionsGroup -.-> python/lambda_functions("Lambda Functions") python/FunctionsGroup -.-> python/scope("Scope") subgraph Lab Skills python/dictionaries -.-> lab-398134{{"Python の辞書の各値に関数を適用する方法"}} python/function_definition -.-> lab-398134{{"Python の辞書の各値に関数を適用する方法"}} python/arguments_return -.-> lab-398134{{"Python の辞書の各値に関数を適用する方法"}} python/lambda_functions -.-> lab-398134{{"Python の辞書の各値に関数を適用する方法"}} python/scope -.-> lab-398134{{"Python の辞書の各値に関数を適用する方法"}} end

Python の辞書(dictionary)を理解する

Python の辞書(dictionary)は、キーと値のペアを格納して操作することができる強力なデータ構造です。その柔軟性と効率性から、Python プログラミングで広く使用されています。

Python の辞書とは何か?

Python の辞書は、キーと値のペアの順序付けされていないコレクションで、各キーは一意であり、対応する値にマッピングされます。辞書は波括弧 {} で表され、各キーと値のペアはコロン : で区切られます。

以下は、簡単な辞書の例です。

person = {
    "name": "John Doe",
    "age": 35,
    "occupation": "Software Engineer"
}

この例では、キーは "name""age""occupation" で、対応する値はそれぞれ "John Doe"35"Software Engineer" です。

辞書の要素にアクセスして変更する

辞書内の値には、対応するキーを使用してアクセスすることができます。例えば:

print(person["name"])  ## 出力: "John Doe"
print(person["age"])   ## 出力: 35

また、辞書内のキーと値のペアを追加、更新、または削除することもできます。

person["city"] = "New York"  ## 新しいキーと値のペアを追加
person["age"] = 36          ## 既存の値を更新
del person["occupation"]    ## キーと値のペアを削除

一般的な辞書の操作

Python の辞書には、次のような幅広い組み込みメソッドと操作が用意されています。

  • len(dict): 辞書内のキーと値のペアの数を返します。
  • dict.keys(): 辞書内のすべてのキーを含むビューオブジェクトを返します。
  • dict.values(): 辞書内のすべての値を含むビューオブジェクトを返します。
  • dict.items(): 辞書内のすべてのキーと値のペアを含むビューオブジェクトを返します。
  • "key" in dict: キーが辞書内に存在するかどうかを確認します。
  • dict.get(key, default): 指定されたキーの値を取得します。キーが見つからない場合は、デフォルト値を返します。

Python の辞書の基本的な概念と操作を理解することは、次のセクションで探るように、その値に関数を効果的に適用するために不可欠です。

辞書(dictionary)の値に関数を適用する

Python の辞書(dictionary)をしっかりと理解したら、その値にさまざまな関数を適用し始めることができます。これにより、辞書に格納されているデータに対して幅広い操作と変換を行うことができます。

辞書の値を反復処理する

辞書内の各値に関数を適用する最も一般的な方法の 1 つは、辞書の値を反復処理することです。これを実現するには、単純な for ループを使用できます。

person = {
    "name": "John Doe",
    "age": 35,
    "occupation": "Software Engineer"
}

for value in person.values():
    print(value)

これは以下のように出力されます。

John Doe
35
Software Engineer

辞書内包表記を使用する

Python の辞書内包表記(dictionary comprehension)機能は、辞書内の各値に関数を適用する簡潔な方法を提供します。一般的な構文は次の通りです。

new_dict = {key: function(value) for key, value in original_dict.items()}

以下は、辞書内の値を 2 乗する例です。

numbers = {1: 2, 3: 4, 5: 6}
squared_numbers = {key: value**2 for key, value in numbers.items()}
print(squared_numbers)  ## 出力: {1: 4, 3: 16, 5: 36}

map() と lambda を使って関数を適用する

組み込みの map() 関数とラムダ関数を組み合わせて、辞書内の各値に変換を適用することもできます。

numbers = {1: 2, 3: 4, 5: 6}
squared_numbers = dict(map(lambda item: (item[0], item[1]**2), numbers.items()))
print(squared_numbers)  ## 出力: {1: 4, 3: 16, 5: 36}

この例では、map() 関数が lambda item: (item[0], item[1]**2) というラムダ関数を numbers 辞書内の各キーと値のペアに適用し、結果は dict() 関数を使用して辞書に戻されます。

これらは、Python の辞書の値に関数を適用する方法のいくつかの例にすぎません。選択する具体的なアプローチは、プロジェクトの要件と実行する必要のある変換の複雑さによって異なります。

実世界でのアプリケーションと例

これで Python の辞書(dictionary)の値に関数を適用する方法をしっかりと理解したので、いくつかの実世界でのアプリケーションと例を探ってみましょう。

データ変換と前処理

辞書の値に関数を適用する一般的なユースケースの 1 つは、データ変換と前処理です。生データを含む辞書があり、アプリケーションで使用する前に値をクリーニング、正規化、または変換する必要があると想像してみてください。以下はその例です。

raw_data = {
    "name": "John Doe",
    "age": "35",
    "salary": "50000.00"
}

cleaned_data = {key: float(value) if key in ["age", "salary"] else value for key, value in raw_data.items()}
print(cleaned_data)
## 出力: {'name': 'John Doe', 'age': 35.0, 'salary': 50000.0}

この例では、辞書内包表記を使用して、"age" と "salary" の値を文字列から浮動小数点数に変換し、"name" の値はそのままにしています。

データの集計と分析

もう 1 つの一般的なユースケースは、辞書に格納されたデータの集計と分析です。たとえば、販売データの辞書があり、総販売額や製品ごとの平均販売額を計算したい場合があります。以下はその例です。

sales_data = {
    "product_a": 1000,
    "product_b": 1500,
    "product_c": 2000
}

total_sales = sum(sales_data.values())
average_sales = {key: value / total_sales for key, value in sales_data.items()}

print(f"Total sales: {total_sales}")
print("Average sales per product:")
for product, avg_sale in average_sales.items():
    print(f"{product}: {avg_sale:.2f}")

これは以下のように出力されます。

Total sales: 4500
Average sales per product:
product_a: 0.22
product_b: 0.33
product_c: 0.44

データのフィルタリングとソート

関数を使用して、辞書に格納されたデータをフィルタリングしたりソートしたりすることもできます。たとえば、ユーザー情報の辞書があり、特定の年齢を超えるすべてのユーザーを見つけたい場合があります。以下はその例です。

user_data = {
    "user_a": {"name": "John Doe", "age": 35, "role": "admin"},
    "user_b": {"name": "Jane Smith", "age": 28, "role": "user"},
    "user_c": {"name": "Bob Johnson", "age": 42, "role": "admin"}
}

older_users = {key: value for key, value in user_data.items() if value["age"] > 30}
print(older_users)
## 出力: {'user_a': {'name': 'John Doe', 'age': 35, 'role': 'admin'}, 'user_c': {'name': 'Bob Johnson', 'age': 42, 'role': 'admin'}}

この例では、辞書内包表記を使用して、30 歳を超えるユーザーのみを含む新しい辞書 older_users を作成しています。

これらは、Python の辞書の値に関数を適用して実世界の問題を解決する方法のいくつかの例にすぎません。具体的なユースケースと手法は、プロジェクトの要件と扱っているデータによって異なります。

まとめ

このチュートリアルの最後まで学ぶと、Python の辞書(dictionary)の値に関数を適用する方法をしっかりと理解することができ、データ処理のワークフローを合理化し、Python プログラミング言語を使って幅広い実世界の問題に取り組むことができるようになります。