TL; DR
在为子键分配值时,如何在 Python 字典中自动激活超级键,而不在检查子键时自动激活它们?
背景: 通常在 Python 中,在嵌套字典中设置值需要手动确保更高级别的键存在,然后再分配给它们的子键。那是,
my_dict[1][2] = 3
如果不先做类似的事情,将无法按预期可靠地工作
if 1 not in my_dict:
my_dict[1] = {}
my_dict
现在,可以通过创建一个覆盖的类的实例来设置一种自动生存__missing__
,如https://stackoverflow.com/a/19829714/6670909所示。
问题:但是,如果您检查这种嵌套字典中是否存在子键,该解决方案会静默自动激活更高级别的键。这导致了以下不幸:
>>> vd = Vividict()
>>> 1 in vd
False
>>> 2 in vd[1]
False
>>> 1 in vd
True
我怎样才能避免这种误导性的结果?顺便说一下,在 Perl 中,我可以通过做
no autovivification qw/exists/;
如果可能的话,基本上我想在 Python 中复制这种行为。