如果有更好的方法来实现这一目标?
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,它会自动生成默认标志状态列表。
答案 0 :(得分:2)
它没有任何问题,但使用partial
似乎有点过分只是为了返回一个静态值。为什么不呢:
defaultFlags = {'flag_name' : False,
'flag_name2' : False,
'flag_name3' : False,
# etc.
}
self.ids_with_flags_dictionary = defaultdict(lambda: defaultFlags.copy())
答案 1 :(得分:0)
您可以lambda
使用dict.fromkeys:
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}
或者,为了适应任意的决定,只需从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}