问题标签 [autovivification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
932 浏览

python - 单行树实现

基于这个答案,我想创建一个单行树作为另一个类的一部分,如下所示:

我将需要允许所述类的用户将路径元素添加到树并从最低树级别开始运行一些回调。当我运行时,我的幼稚实现会引发错误pytest

如果树被定义为,则此代码有效

为什么我的天真方法不适用于 lambda 表达式?


Python之禅

简单胜于复杂。

单行 lambda 使代码复杂,而实现更简单因此,不应在生产代码中使用单行 lambda 。但是,出于学术兴趣,我将把这个问题留在这里。

0 投票
4 回答
3235 浏览

python - 如何在python中创建具有重复键的嵌套字典

我想用嵌套字典和重复键创建数据结构。一个详细的例子是:

目前为了存储我使用额外的计数器键的数据

但是在解析城市/区域的总条目(以及重复项)时,我必须使用嵌套循环直到计数器键。

对于嵌套字典,我找到了 nosklo 发布的以下代码

对于具有重复键的字典,我发现 Scorpil 发布的代码

如何合并 Autovivification 和 Duplicate 类代码?还是有任何其他pythonic方式来处理这种情况?

0 投票
2 回答
77 浏览

arrays - perl 数组的自动激活

我正在阅读伦敦的“不耐烦的 perl”。我正在测试“参考”一章中的一个示例。我想知道为什么在引用的自动激活中我需要在 [] 中放置一个数字(任何数字),而在声明一个数组时,我可以只使用 [] 作为空数组。谢谢。

错误消息是“referenceTest.pl 第 7 行的语法错误,靠近“[]”全局符号“$val”需要在 referenceTest.pl 第 15 行显示明确的包名称。由于编译错误,referenceTest.pl 的执行中止。”

================== 当它使用[7]工作时,结果是:

谢谢你启发我。

0 投票
2 回答
483 浏览

python - 如何在python中定义具有默认值的多维字典?

我想修改下一个字典定义:

为了能够以下列方式使用它:

0 投票
3 回答
190 浏览

python - 特定的动态嵌套字典,Autovivification 实现

我正在尝试以特定方式实现嵌套字典结构。我正在阅读一长串单词。这些词最终需要经常有效地搜索,所以这就是我希望我的字典设置的方式:

我正在尝试制作一个嵌套字典结构,其中第一个键值是单词的长度,值是一个字典,键是单词的第一个字母,值是一个字典,键是第二个字母的单词和值是一个字典,键是单词的第三个字母等。

所以如果我读到“car”“can”和“joe”

我明白了

我需要为大约 100,000 个单词执行此操作,它们的长度从 2 到 27 个字母不等。

我已经浏览了实现嵌套字典的最佳方法是什么?动态嵌套字典

但没有任何运气弄清楚这一点。

我当然可以使用

我可以使用

或者

我只是不知道如何让这个结构下来。任何帮助将不胜感激。

0 投票
1 回答
122 浏览

ruby - 如何为 Ruby 结构实现自动生存?

Ruby 通过将块传递给以下内容来支持哈希的自动生存Hash.new

我也想为结构实现自动生存。这是我能想到的最好的:

当然,这只会自动激活命名访问器 ( foo.bar),而不是[]表单 ( foo[:bar])。有没有更好的方法来实现结构的自动激活,特别是一种对foo.barfoo[:bar]形式都有效的方法?

0 投票
2 回答
226 浏览

go - Go 有自动生存功能吗?

Go有自动生存功能吗?

正如@JimB 正确注意到的那样,我的定义并不那么严格。关于我的目标:在 Python 中,我们有一个非常优雅的“仿真”来实现自动激活:

Go有类似的解决方案吗?

0 投票
2 回答
187 浏览

perl - 为什么 $foo->{bar} 会自动激活而 %$foo 不会?

我有以下代码:

当我打电话时,some_sub我得到一个错误:

不能在 ... 处使用未定义的值作为 HASH 引用

但类似的代码不会产生错误:

为什么自动激活在第一个示例中的工作方式与在第二个示例中的工作方式不同?

UPD

我注意到@ThisSuitIsBlackNot。我真的问:

为什么我的 $h; $h->{foo} 有效,我的 $h; %$h 没有

UPD
真实代码:

0 投票
2 回答
776 浏览

python - 仅在分配值时如何为嵌套字典实现自动生存?

TL; DR
在为子键分配值时,如何在 Python 字典中自动激活超级键,而不在检查子键时自动激活它们?

背景: 通常在 Python 中,在嵌套字典中设置值需要手动确保更高级别的键存在,然后再分配给它们的子键。那是,

如果不先做类似的事情,将无法按预期可靠地工作

my_dict现在,可以通过创建一个覆盖的类的实例来设置一种自动生存__missing__,如https://stackoverflow.com/a/19829714/6670909所示。

问题:但是,如果您检查这种嵌套字典中是否存在子键,该解决方案会静默自动激活更高级别的键。这导致了以下不幸:

我怎样才能避免这种误导性的结果?顺便说一下,在 Perl 中,我可以通过做

如果可能的话,基本上我想在 Python 中复制这种行为。

0 投票
2 回答
207 浏览

perl - Perl 赋值时自动激活

当不存在的键分配给变量时,Perl 是否真正自动激活键?

我有这个代码:

my $variable = $self->{database}->{'my_key'}[0];

该变量$self->{database}->{'my_key'}[0]在我的哈希中未定义,但如果我在分配后打印一个 Dumper,我很惊讶它my_key被创建了。

我知道这种情况的功能:

这会给我结果:

$VAR1 = [ undef, undef, undef, 'Buster' ];

但从没想过会以相反的方式工作,其中 : my $weird_autovivification = $array->[3]; 也会活跃起来$array->[3]