空のリストの辞書を初期化しています。次よりも効率的な辞書の初期化方法はありますか?
dictLists = {}
dictLists['xcg'] = []
dictLists['bsd'] = []
dictLists['ghf'] = []
dictLists['cda'] = []
...
毎回dictListsを書く必要がない方法はありますか、それともこれは避けられませんか?
空のリストの辞書を初期化しています。次よりも効率的な辞書の初期化方法はありますか?
dictLists = {}
dictLists['xcg'] = []
dictLists['bsd'] = []
dictLists['ghf'] = []
dictLists['cda'] = []
...
毎回dictListsを書く必要がない方法はありますか、それともこれは避けられませんか?
collections.defaultdictを使用すると、欠落しているキーに特定の値を返すファクトリメソッドを設定できます。
a = collections.defaultdict(list)
編集:
これが私の鍵です
b = ['a', 'b','c','d','e']
これが「事前定義されたキー」を使用している私です
for key in b:
a[key].append(33)
キーが事前にわかっている場合は、次のことができます
dictLists = dict((key, []) for key in ["xcg", "bsd", ...])
または、Python >=2.7 の場合:
dictLists = {key: [] for key in ["xcg", "bsd", ...]}
静的キーを追加する場合は、それらをdictコンストラクターに直接配置してみませんか?
dictLists = dict(xcg=[], bsd=[], ghf=[])
または、キーが常に有効なPython識別子でもない場合:
dictLists = {'xcg': [], 'bsd': [], 'ghf': []}
一方、キーが静的でないか、シーケンスに簡単に保存できない場合は、キーがたくさんあると、キーをループする方が効率的です。次の例でもkeys
変数を入力しているため、これは上記のメソッドよりも効率的ではありませんがkeys
、何らかの方法で生成された場合は、より効率的になる可能性があります。
keys = ['xcg', 'bsd', 'ghf', …]
dictLists = {key: [] for key in keys}
追加するキーのforループを使用することもできます。
for i in ("xcg", "bsd", "ghf", "cda"):
dictList[i] = []
辞書内包表記をサポートする Python のバージョン (Python 2.7+):
dictLists = {listKey: list() for listKey in listKeys}