【Python】dict for文について

【Python】dict for文について

基本的なdictのfor文

Pythonの辞書(dict)はキーと値のペアを持つデータ構造で、for文を使って簡単にループ処理ができます。


my_dict = {"a": 1, "b": 2, "c": 3}

for key in my_dict:
    print(key, my_dict[key])

このコードでは、辞書の各キーを取得し、それに対応する値を表示しています。

キーのループ処理

辞書のキーだけを取得したい場合は、keys() メソッドを使用します。


my_dict = {"apple": 10, "banana": 20, "cherry": 30}

for key in my_dict.keys():
    print(key)

この方法は、明示的に「キーだけをループする」ことを示したい場合に便利です。

値のループ処理

辞書の値だけをループしたい場合は、values() メソッドを使います。


my_dict = {"apple": 10, "banana": 20, "cherry": 30}

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

この方法は、キーに関係なく値だけを処理したい場合に役立ちます。

キーと値の同時ループ処理

items() メソッドを使用すると、キーと値を同時に取得できます。


my_dict = {"apple": 10, "banana": 20, "cherry": 30}

for key, value in my_dict.items():
    print(f"{key} : {value}")

この方法は、キーと値の両方を使って処理を行う場合に便利です。

辞書内包表記(dict comprehension)

辞書内包表記(dictionary comprehension)を使うと、簡潔に辞書を作成できます。


squared = {x: x**2 for x in range(5)}
print(squared)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

条件を加えることもできます。


even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(even_squares)  # {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

実用的な使用例

辞書のfor文はさまざまな場面で役立ちます。例えば、辞書をリストに変換するケースです。


my_dict = {"apple": 10, "banana": 20, "cherry": 30}

# キーのリスト
keys_list = list(my_dict.keys())
print(keys_list)  # ['apple', 'banana', 'cherry']

# 値のリスト
values_list = list(my_dict.values())
print(values_list)  # [10, 20, 30]

また、辞書のデータをフィルタリングする場合にも便利です。


prices = {"apple": 100, "banana": 50, "cherry": 200}

# 100円以上の商品のみを抽出
expensive = {k: v for k, v in prices.items() if v >= 100}
print(expensive)  # {'apple': 100, 'cherry': 200}

ネストされた辞書のループ処理

辞書の中に辞書がある場合(ネストされた辞書)、for文をネストして処理できます。


nested_dict = {
    "fruit": {"apple": 100, "banana": 50},
    "vegetable": {"carrot": 30, "spinach": 40}
}

for category, items in nested_dict.items():
    print(f"{category}:")
    for name, price in items.items():
        print(f"  {name} - {price}")

この方法を使うと、カテゴリごとに整理されたデータを簡単に処理できます。

パフォーマンスの考慮

大規模な辞書を処理する場合、辞書内包表記を使うと処理が速くなることがあります。


import time

large_dict = {i: i**2 for i in range(1000000)}

# 普通のfor文
start = time.time()
filtered = {}
for k, v in large_dict.items():
    if v % 2 == 0:
        filtered[k] = v
end = time.time()
print(f"普通のfor文: {end - start:.5f}秒")

# 辞書内包表記
start = time.time()
filtered_comp = {k: v for k, v in large_dict.items() if v % 2 == 0}
end = time.time()
print(f"辞書内包表記: {end - start:.5f}秒")

このように、辞書内包表記のほうが処理が速くなる場合があります。

Pythonの辞書のfor文を使いこなせば、データの操作がより効率的に行えるようになります。ぜひ活用してみてください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です