我想要一个Python3defaultdict,它有一个字典作为条目。应该是这样的:
my_dict[first_index] -> {second_index_1: value_1, second_index_2: value_2}文档中概述了如何创建一个defaultdict:
https://docs.python.org/3.6/library/collections.html#collections.defaultdict
默认类型int的defaultdict示例。
d = defaultdict(int)
for k in s:
d[k] += 1通过工厂函数创建更复杂的条目( defaultdict的第一个参数必须是可调用的):
def constant_factory(value):
return lambda: value
d = defaultdict(constant_factory('<missing>'))问题是,constant_factory函数在使用它时总是返回相同的dict,如下所示:
def constant_factory(value):
return lambda: value
my_dict = defaultdict(constant_factory({"second_index_1":None,"second_index_2":None}))
my_dict["first_index_1"]["second_index_1"] = "value_1"产量:
my_dict["first_index_1"]["second_index_1"] -> "value_1"如预期的那样。
现在正在做
def constant_factory(value):
return lambda: value
my_dict = defaultdict(constant_factory({"second_index_1":None,"second_index_2":None}))
my_dict["first_index_1"]["second_index_1"] = "value_1"
my_dict["first_index_2"]["second_index_1"] = "value_2"产量:
my_dict["first_index_1"]["second_index_1"] -> "value_2"这意味着,通过访问dict中的第二个条目,我们意外地修改了第一个条目。
发布于 2020-04-18 21:00:36
问题是工厂函数,它只创建一个实例:
def constant_factory(value):
return lambda: value可以通过使用
def constant_factory(value):
return lambda: value.copy()每次复制dict都会创建不同的实例。
https://stackoverflow.com/questions/61296165
复制相似问题