0

これを達成するためのより良い方法があれば?

from functool import partial
from collections import defaultdict

dict_factory = partial(dict, {'flag_name' : False,
                              'flag_name2' : False,
                              'flag_name3' : True, etc.}

self.ids_with_flags_dictionary = defaultdict(dict_factory)

ここでの目標は、以前に呼び出されたことのない ID を呼び出すと、デフォルトのフラグ状態のリストを自動生成するキーの辞書 (キーはある種の ID) です。

4

2 に答える 2

2

正確には何も問題はありませんがpartial、静的な値を返すためだけに使用するのは少しやり過ぎのようです。それだけではない理由:

defaultFlags = {'flag_name' : False,
'flag_name2' : False,
'flag_name3' : False,
# etc.
}

self.ids_with_flags_dictionary = defaultdict(lambda: defaultFlags.copy())
于 2013-10-29T20:26:08.620 に答える
0

dict.fromkeyslambdaで aを使用できます。

In [15]: x = collections.defaultdict(
             lambda: dict.fromkeys(
                 ['flag_name', 'flag_name2', 'flag_name3'], False))

In [16]: x['foo']
Out[16]: {'flag_name': False, 'flag_name2': False, 'flag_name3': False}

または、任意の dict に対応するには、 から dict を返すだけlambdaです:

In [17]: x = collections.defaultdict(lambda: {'flag_name': False, 'flag_name2': False, 'flag_name3': False})

In [18]: x['foo']
Out[18]: {'flag_name': False, 'flag_name2': False, 'flag_name3': False}
于 2013-10-29T20:27:22.377 に答える