PR
更新:2024/09/16

Pythonの辞書型(dictionary)の基本的な操作・ネストされた辞書・例題について

はるか
はるか
Pythonの辞書について話そう。
ふゅか
ふゅか
いいね!キーと値のペアでデータを管理できるから、とても便利よね!

1. 辞書とは

Pythonの辞書(dictionary)は、キー(key)と値(value)のペアを持つデータ構造です。辞書は他の言語で言う「連想配列」や「ハッシュマップ」と同じような役割を果たします。以下では、Pythonの辞書の基本的な操作とその特徴について解説します。

1.1. 辞書の定義

辞書は、中括弧 {} で囲んでキーと値をコロン : で結んだ形で定義します。

# 辞書の定義例
student = {
    "name": "ExE",
    "age": 20,
    "grade": "A"
}

この例では、"name", "age", "grade" がキーで、それぞれ "ExE", 20, "A" が値になっています。

2. 辞書の操作

2.1. 値の取得

辞書からキーを使って値を取得するには、キーを指定してアクセスします。

# 値の取得
name = student["name"]  # "ExE" が取得される

2.2. 値の更新・追加

既存のキーの値を更新したり、新しいキーを追加したりすることができます。

# 値の更新
student["age"] = 21  # age の値が 21 に更新される

# 新しいキーと値の追加
student["major"] = "Physics"  # 新たに "major" キーが追加され、値は "Physics"

2.3. キーの削除

del 文を使って特定のキーとその値を辞書から削除できます。

# キーと値の削除
del student["grade"]  # "grade" キーが辞書から削除される

2.4. 辞書のメソッド

Pythonの辞書には便利なメソッドがいくつか用意されています。

  • keys(): 辞書のすべてのキーを取得します。
  • values(): 辞書のすべての値を取得します。
  • items(): 辞書のすべてのキーと値のペアを取得します。
# keys, values, items の例
keys = student.keys()  # dict_keys(['name', 'age', 'major'])
values = student.values()  # dict_values(['Alice', 21, 'Physics'])
items = student.items()  # dict_items([('name', 'Alice'), ('age', 21), ('major', 'Physics')])

はるか
はるか
keys(), values(), items() などのメソッドが用意されている。これらを使ってキーだけ、値だけ、または両方を取得できる。
ふゅか
ふゅか
それらを使えば、forループで辞書の内容を効率的に処理できるわね。

3. 辞書の応用例

3.1. 辞書を使ったループ

辞書のキーや値に対してループ処理を行うこともできます。

# 辞書のすべてのキーと値をループで処理
for key, value in student.items():
    print(f"{key}: {value}")

3.2. get() メソッド

辞書の値を取得する際、キーが存在しない場合にはエラーが発生しますが、get() メソッドを使うと、キーが存在しない場合にデフォルトの値を返すことができます。

# キーが存在しない場合にデフォルト値を返す
major = student.get("major", "Unknown")  # 存在すれば "Physics", 存在しなければ "Unknown" を返す

はるか
はるか
get() メソッドはキーが存在しない場合にデフォルト値を返す。エラーを防げる。
ふゅか
ふゅか
ネストされた辞書もすごく便利。たとえば、学生の年齢や成績をさらに辞書で管理できるよ!

3.3. ネストされた辞書

辞書の値として、さらに辞書を持つこともできます。これをネストされた辞書といいます。

# ネストされた辞書の例
students = {
    "Alice": {"age": 20, "grade": "A"},
    "Bob": {"age": 22, "grade": "B"}
}

# ネストされた辞書へのアクセス
alice_age = students["Alice"]["age"]  # 20 が取得される

4. 辞書の例題

4.1. 例題 1:辞書の値の更新

次の辞書 fruit_prices には、果物の名前をキー、価格を値として保持しています。キーが “banana” の値を 10 増加させて、更新された辞書を表示してください。
fruit_prices = {
    "apple": 100,
    "banana": 50,
    "orange": 70
}

期待される出力:

{'apple': 100, 'banana': 60, 'orange': 70}

解答の手順:

  1. キー “banana” の値にアクセスする。
  2. 値を 10 増加させる。
  3. 辞書の値を更新して出力する。

解答:

fruit_prices = {
    "apple": 100,
    "banana": 50,
    "orange": 70
}
fruit_prices["banana"] += 10
print(fruit_prices)

4.2. 例題 2:平均点の計算

辞書 student_scores にある学生の点数を使って、平均点を計算して出力してください。
student_scores = {
    "MoM": 85,
    "EoE": 78,
    "ToE": 92
}

期待される出力:

平均点: 85.0

解答の手順:

  1. 辞書の値(点数)を取得する。
  2. 点数の合計を計算する。
  3. 合計を辞書の項目数で割り、平均点を計算する。
  4. 平均点を出力する。

解答:

student_scores = {
    "MoM": 85,
    "EoE": 78,
    "ToE": 92
}
average_score = sum(student_scores.values()) / len(student_scores)
print("平均点:", average_score)

4.3. 例題 3:新しい辞書の作成

次の辞書 city_population から、人口が 1,000,000 以上の都市のみを新しい辞書に格納し、出力してください。
city_population = {
    "Tokyo": 14000000,
    "Osaka": 8800000,
    "Nagoya": 2300000,
    "Fukuoka": 1500000,
    "Kyoto": 800000
}

期待される出力:

{'Tokyo': 14000000, 'Osaka': 8800000, 'Nagoya': 2300000, 'Fukuoka': 1500000}

解答の手順:

  1. 辞書の各項目をループで回す。
  2. 条件(人口が 1,000,000 以上)に一致する項目を新しい辞書に追加する。
  3. 新しい辞書を出力する。

解答:

city_population = {
    "Tokyo": 14000000,
    "Osaka": 8800000,
    "Nagoya": 2300000,
    "Fukuoka": 1500000,
    "Kyoto": 800000
}
large_cities = {city: population for city, population in city_population.items() if population >= 1000000}
print(large_cities)

4.4. 例題 4:在庫の追加

辞書 inventory には商品と在庫数が記録されています。この辞書に “pen” をキーに持ち、在庫数 50 の項目を追加してください。
inventory = {
    "notebook": 120,
    "pencil": 85,
    "eraser": 40
}

期待される出力:

{'notebook': 120, 'pencil': 85, 'eraser': 40, 'pen': 50

解答の手順:

  1. キー “pen” と値 50 を辞書に追加する。
  2. 更新された辞書を出力する。

解答:

inventory = {
    "notebook": 120,
    "pencil": 85,
    "eraser": 40
}
inventory["pen"] = 50
print(inventory)

4.5. 例題 5:キーの変換

次の辞書 prices から、すべてのキーを取得してリスト形式で出力してください。
prices = {
    "apple": 100,
    "banana": 60,
    "cherry": 200
}

期待される出力:

['apple', 'banana', 'cherry']

解答の手順:

  1. 辞書のキーを取得する。
  2. キーをリストに変換する。
  3. リストを出力する。

解答:

prices = {
    "apple": 100,
    "banana": 60,
    "cherry": 200
}
keys_list = list(prices.keys())
print(keys_list)


check

Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!

Pythonの記事のまとめ

PR