Pythonで辞書の中にリストを扱う方法を徹底解説!

プログラミング

こんにちは、skyrinrinです。

Pythonを使っていると、

辞書とリストの組み合わせが必要になる場面があると思います。

例えば、学生の成績を管理したり、

製品のレビューを保存したりする場合など、

辞書の中にリストを入れると非常に効率的にデータを扱うことができます。

今回は、そんな辞書とリストについてまとめていきます!

この記事はこんな方におすすめ!

・辞書の中にリストを扱う方法を知りたい方

辞書の中にリストってどう使うの?

Pythonで複雑なデータ構造を扱いたいけど、

辞書の中にリストを入れる方法がわからない!

筆者
筆者

それなら、今回のガイドを参考にしてみて!

辞書とリストを組み合わせて使う方法を

具体的な例を交えながら解説をしていくよ!

ありがとう!早速教えて!

辞書とリストの基本!

辞書

Pythonの辞書は、キーと値をセットで保存するみたいなものです。

例えば、果物の種類をキーにして、にはその果物の色とか味とかを保存できます。

筆者
筆者

簡単に果物と番号で割り振ると

リンゴは1

バナナは2

いちごは3

みたいな感じで辞書を作るんだよ!

リスト

リストは、たくさんのデータをひとまとめにできるもので、

果物のリストを作ると、りんごもバナナもいちごも一緒に管理できます。

筆者
筆者

リンゴとバナナといちごを

果物っていう箱に入れる感じだよ!

辞書の中にリストを格納する基本!

辞書の中にリストを入れるときは、

キーと値のセットをリストにして、

そのリストを辞書の値として保存します。

これで、辞書の中にリストをまとめて保存できます。

# 辞書の中にリストを格納する基本例
fruit_inventory = {
    "Apple": [10, 15, 8],  # リンゴの在庫:10個、15個、8個
    "Banana": [20, 30, 25],  # バナナの在庫:20本、30本、25本
    "Strawberry": [100, 80, 120]  # いちごの在庫:100パック、80パック、120パック
}

print(fruit_inventory)

この例ではりんごとバナナといちごをキーにして

に在庫としてリストを設定しています。

わ、わかりにくい…

筆者
筆者

やっぱり最初は想像が難しいよね…

段々と慣れていくからんばってみて!

辞書の中にリストを追加する方法!

新しいリストを既存の辞書に追加するには、

辞書のキーに新しい名前を指定して、

その名前に対応する値として新しいリストを入れます。

# 辞書に新しいリストを追加する例
fruit_inventory["orange"] = [88, 92, 85]

print(fruit_inventory)

この例では果物のリストにオレンジを追加しています。

筆者
筆者

新しく要素を追加したいときは
このようにするよ!

辞書の中のリストを使った実践例!

# 果物の在庫管理
fruit_inventory = {
    "Apple": [10, 15, 8],       # リンゴの在庫:10個、15個、8個
    "Banana": [20, 30, 25],     # バナナの在庫:20本、30本、25本
    "Strawberry": [100, 80, 120]  # いちごの在庫:100パック、80パック、120パック
}

# バナナの在庫の変動を示すリストを取得
banana_stock_changes = fruit_inventory["Banana"]

# バナナの在庫の最新数を計算
latest_banana_stock = sum(banana_stock_changes)

print("バナナの最新在庫数:", latest_banana_stock)

この例では、果物の在庫を管理するために辞書を使っています。

各果物の名前をキーにし、その在庫の変動をリストで管理しています。

バナナの在庫の変動を取り出して、

それらの合計を計算してバナナの最新在庫数を表示しています。

へ~…こんな感じで使うんだ!

辞書の中にリストを入れる際の注意点!

辞書の中にリストを入れる際には、

いくつかの注意点があります。

可変性

リストは可変オブジェクトであるため、

辞書の値として使用する際には、

リストの変更が他の部分に影響を与えないように注意が必要です。

筆者
筆者

可変オブジェクトは、
後から変更することができるオブジェクトのことだよ!

深いコピーと浅いコピー

辞書の中にリストを入れる際に注意が必要な点の一つが、

コピーの扱いです。

Pythonでは、リストをコピーする際に
「浅いコピー」「深いコピー」の2つの方法があります。

浅いコピー:元のリストを変更してしまうと複製したリストも同期して変更されてしまう
深いコピー:元のリストとは別に完全に独立したリストができる

例えば、辞書の中にリストがある場合、

浅いコピーを使用すると、

元の辞書とコピーした辞書が同じリストオブジェクトを共有することがあります。

これが問題になる場合は、深いコピーを使用する必要があります。

import copy

# 元の辞書
original_dict = {
    "list1": [1, 2, 3],
    "list2": [4, 5, 6]
}

# 浅いコピー
shallow_copy_dict = copy.copy(original_dict)

# 深いコピー
deep_copy_dict = copy.deepcopy(original_dict)

# 元の辞書のリストを変更
original_dict["list1"].append(4)

print("元の辞書:", original_dict)
print("浅いコピー:", shallow_copy_dict)
print("深いコピー:", deep_copy_dict)

この例では、

元の辞書を浅いコピーと深いコピーでコピーしています。

その後、元の辞書の “list1” の要素に変更を加えます。

この変更が浅いコピーと深いコピーのどちらに影響を与えるかを確認しています。

コピーコピーうるさいな!

よくある質問とその解決方法!

Q1: 辞書の中にリストを追加する際、エラーが発生します。なぜですか?

A1: 辞書のキーが存在しない場合、

リストを直接追加しようとするとエラーが発生します。

まず、キーが存在するかを確認し、

存在しない場合は新しいリストを作成してから追加する必要があります。

student_grades = {}

# キーの存在を確認
if "Alice" not in student_grades:
    student_grades["Alice"] = []

student_grades["Alice"].append(85)

print(student_grades)

Q2: 辞書の中にリストを使って複雑なデータ構造を管理するにはどうすればいいですか?

A2: 辞書の中にリストを使って階層的なデータ構造を作成することで、

複雑なデータを効率的に管理できます。

必要に応じて、ネストされた辞書やリストを使用することも可能です。

# ネストされたデータ構造の例
company_data = {
    "Employees": {
        "Alice": {"Age": 30, "Department": "HR", "Skills": ["Recruitment", "Training"]},
        "Bob": {"Age": 25, "Department": "Engineering", "Skills": ["Python", "C++"]}
    }
}

print(company_data)
筆者
筆者

何層も階層を作って複雑化するんだね!

まとめ

今回は、Pythonでの辞書とリストについてまとめていきました。

辞書とリストを組み合わせることで、

より効率化ができたりできることの範囲が広まったりします!

皆さんもぜひ活用してみてください。

このブログでは他にも、

プログラミングに関係する悩みなどを解決する記事を紹介しています。

気になる方はぜひ、他の記事もご覧ください!

筆者
筆者

この記事が少しでも参考になれたらうれしいです!

コメント

タイトルとURLをコピーしました