以dict为值的defaultdict,但值增量记住以前的增量



我有一个默认值为字典的defaultdict。假设默认值类似于{'A': 0, 'B': 0, 'C':0}

每次,我输入一个新的键,它都会像这个{"Mary": {'A': 0, 'B': 0, 'C':0}},如果我把默认值加一,它应该像这个{"Mary": {'A': 1, 'B': 0, 'C':0}}

然而,这里有一个棘手的部分,如果我添加一个新的密钥,它将是这样的,{"Mary": {'A': 1, 'B': 0, 'C':0}, "Tom":{'A': 1, 'B': 0, 'C':0}},我想知道为什么?汤姆不应该是{'A': 0, 'B': 0, 'C':0}吗?

有人能向我解释为什么会发生这种情况吗?我如何确保每次输入新密钥时,初始化实际上是原始初始化,而不是新增加的初始化?如果我用字典中已经存在的同一个键递增不同的字母,它会像往常一样递增吗?

顺便说一句,我在课堂上做这件事,你们可以按照下面的模板:

class Tokenization: 
def __init__(self): 
# Let's assume I created the defaultdict here in the __init__ function
def add_one_key(self, names, letter): 
for name in names: 
defaultdict[name][letter] += 1

您可以传递一个函数作为default_factory参数:

from collections import defaultdict
dct = defaultdict(lambda: {'A': 0, 'B': 0, 'C':0})
dct["Mary"]['A'] = 1
print(dct["Mary"]) # {'A': 1, 'B': 0, 'C': 0}
print(dct["Tom"])  # {'A': 0, 'B': 0, 'C': 0}

实际上,当我们做类似defaultdict(int)的事情时,我们实际上是在将函数int传递给defaultdict。然后每当需要默认值时,就会调用int()(它总是返回0)。

相关内容

  • 没有找到相关文章

最新更新