dict.fromkeys()メソッドは、キーのリストから新しい辞書を一括で生成するPythonの組み込みメソッドです。すべてのキーに同じ初期値を設定したい場合に便利な機能です。
基本的な使い方
dict.fromkeys()の基本的な構文は以下の通りです:
dict.fromkeys(keys, value=None)- keys: キーとなるイテラブル(リストなど)
- value: すべてのキーに設定する値(省略時はNone)
例えば、以下のように使用します:
# 基本的な使用例
keys = ['a', 'b', 'c']
new_dict = dict.fromkeys(keys)
print(new_dict) # {'a': None, 'b': None, 'c': None}
# 初期値を指定する場合
new_dict = dict.fromkeys(keys, 0)
print(new_dict) # {'a': 0, 'b': 0, 'c': 0}実践的な使用例
1. カウンター辞書の初期化
fruits = ['apple', 'banana', 'orange']
fruit_count = dict.fromkeys(fruits, 0)
print(fruit_count) # {'apple': 0, 'banana': 0, 'orange': 0}2. フラグ辞書の作成
options = ['debug', 'verbose', 'quiet']
settings = dict.fromkeys(options, False)
print(settings) # {'debug': False, 'verbose': False, 'quiet': False}注意点
dict.fromkeys()を使用する際の重要な注意点があります:
1. ミュータブルな値の共有
# 問題のある例
keys = ['x', 'y', 'z']
dict1 = dict.fromkeys(keys, [])
# 全てのキーが同じリストを参照する
dict1['x'].append(1)
print(dict1) # {'x': [1], 'y': [1], 'z': [1]}この問題を回避するには、辞書内包表記を使用します:
# 正しい方法
dict2 = {key: [] for key in keys}
dict2['x'].append(1)
print(dict2) # {'x': [1], 'y': [], 'z': []}2. パフォーマンスの考慮
大量のキーを扱う場合、dict.fromkeys()は効率的です:
# 大量のキーを扱う例
large_keys = range(1000)
large_dict = dict.fromkeys(large_keys, 0)まとめ
dict.fromkeys()は以下の場合に特に有用です:
- 複数のキーに同じ初期値を設定する場合
- 大量のキーを持つ辞書を効率的に生成する場合
- シンプルな初期化が必要な場合
ただし、ミュータブルな値を扱う際は注意が必要で、そのような場合は辞書内包表記の使用を検討してください。
この機能を適切に使用することで、Pythonでの辞書操作をより効率的に行うことができます。