Описание тега autovivification

Автовивификация означает неявное создание структур данных, доступ к которым осуществляется через имя при явном создании их данных, например инициализация хэша при назначении первой пары ключ / значение или создание папки при сохранении файла по новому пути.
2 ответа

perl автовивификация массива

Я читаю "нетерпеливый Perl" в Лондоне. Я тестирую пример из главы "Справочник". Мне интересно, почему при автовивификации ссылок мне нужно поместить число (любое число) в [], тогда как при объявлении массива я могу просто использовать [] в качестве …
19 июл '16 в 00:11
2 ответа

Таинственный ключ вышел из не где в Perl 5.14 хеш-таблица

Я использую хеш-таблицу в своем коде my %stat = (); # read files and do some initialization # like $stat{$key} = {k1=>v1, k2=>v2, k3=>v3}; # I have located the buggy code # I want to do something according to c1 and c2 parsed from each line…
15 мар '13 в 21:54
3 ответа

Вопрос оживления Perl при разыменовании неопределенной ссылки на массив

Мне трудно понять, почему работает следующее: my $array_reference; foreach $element (@{$array_reference}) { # some code } пока следующее не работает my $array_reference; if (scalar (@{$array_reference}) { # some code here } Я понимаю, что Perl оживл…
21 июн '11 в 02:08
4 ответа

Почему в этом случае работает автовификация Perl?

Может ли кто-нибудь помочь мне понять вывод этой Perl-программы: use Data::Dumper; my %hash; $hash{hello} = "foo"; $hash{hello}{world} = "bar"; print $hash{hello} . "\n"; print $hash{hello}{world} . "\n"; print Dumper(\%hash); И вывод: foo bar $VAR1…
18 ноя '09 в 22:07
2 ответа

Perl авто-вивификация по заданию

Действительно ли Perl автоматически оживляет ключ, когда несуществующий ключ назначается переменной? У меня есть этот код: my $variable = $self->{database}->{'my_key'}[0]; Переменная $self->{database}->{'my_key'}[0] не определено в моем …
01 мар '17 в 12:53
5 ответов

Как я могу проверить, существует ли ключ в глубоком хэше Perl?

Если я правильно понимаю, звоню if (exists $ref->{A}->{B}->{$key}) { ... } возникнет $ref->{A} а также $ref->{A}->{B} даже если они не существовали до if! Это кажется крайне нежелательным. Так как мне проверить, существует ли "глуб…
13 сен '10 в 11:45
1 ответ

Корректировка python autoviv для приращения "+=1"

Я использую некоторые общепринятые словари сборки кода для авививификации Python: class autoviv(dict): """Implementation of perl's autovivification feature.""" def __getitem__(self, item): try: return dict.__getitem__(self, item) except KeyError: va…
14 ноя '17 в 06:05
1 ответ

Почему perv autovivification не работает для ->@*, но ->@[0] работает?

Я могу получить значения путем нарезки: ($x, $y, $z) = $hash->{ key }->@[0,1,2] Почему я не могу написать? ($x, $y, $z) = $hash->{ key }->@* Для второго выражения в случаях, когда key не определено в хэше, я получаю ошибку: Не могу испол…
03 ноя '17 в 16:22
2 ответа

Рекурсивные определения в Python

Я просто наткнулся на следующий способ реализации AutoVivification в Python: from collections import defaultdict Tree = lambda: defaultdict(Tree) # common name by class, order, genus, and type-species common_name = Tree() common_name['Mammalia']['Pr…
22 янв '15 в 00:58
3 ответа

Специальные динамические вложенные словари, реализация автовивификации

Я пытаюсь реализовать вложенную структуру словаря определенным образом. Я читаю в длинном списке слов. Эти слова в конечном итоге нужно будет часто и эффективно искать, поэтому я хочу, чтобы мой словарь был настроен: Я пытаюсь создать вложенную слов…
07 дек '16 в 00:58
2 ответа

Как определить многомерный словарь со значением по умолчанию в Python?

Я хотел бы изменить следующее определение dict: class Vividict(dict): def __missing__(self, key): value = self[key] = type(self)() return value Чтобы иметь возможность использовать его следующим образом: totals[year][month] += amount
13 окт '16 в 13:57
4 ответа

Рубиновая автовивификация

Я пытался использовать автовивификацию в ruby, чтобы выполнить простую консолидацию записей по этому вопросу: 2009-08-21|09:30:01|A1|EGLE|Eagle Bulk Shpg|BUY|6000|5.03 2009-08-21|09:30:35|A2|JOYG|Joy Global Inc|BUY|4000|39.76 2009-08-21|09:30:35|A2|…
08 окт '09 в 23:08
9 ответов

Python: Как обновить значение пары ключ-значение во вложенном словаре?

Я пытаюсь создать обратный индекс документа, поэтому мне нужно знать из всех уникальных слов в коллекции, в каком документе они встречаются и как часто. Я использовал этот ответ для второго порядка создания вложенного словаря. Предоставленное решени…
22 фев '11 в 15:00
1 ответ

Не удается найти autovivification.pm в @INC

Я получаю следующую ошибку при запуске скрипта Perl: "Не могу найти autovivification.pm в @INC" Как я могу установить этот модуль в моей системе?
03 ноя '13 в 11:51
4 ответа

Как создать вложенные словари с дублирующимися ключами в python

Я хочу создать структуру данных с вложенными словарями и дубликатами ключей. Подробный пример: data['State1']['Landon']['abc Area'] = 'BOB' data['State1']['Landon']['abc Area'] = 'SAM' data['State1']['Landon']['xyz Area'] = 'John' data['State2']['Ne…
22 мар '16 в 12:36
1 ответ

Обновите словарь Python с произвольно длинным списком значений

У меня есть рабочая проблема, в которой мне нужно было иметь возможность обновлять значения в словаре из произвольно длинного списка ключей. И список ключей, и словарь генерируются из одних и тех же данных во время выполнения, но я не знаю, сколько …
07 окт '15 в 04:52
1 ответ

Ошибка компиляции Perl CGI в autovivication.pm

Я использую скрипт perl cgi, который использует наши собственные библиотеки, которые используют прагму "no autovivification". Например /usr/lib/company/mysim.cgi: #!/usr/bin/perl -w use strict; # ... other use use Company::Module1; /usr/lib/perl5/Co…
04 дек '15 в 16:09
1 ответ

Как я могу получить доступ к глубоко вложенному словарю, используя кортежи?

Я хотел бы расширить пример автовивификации, приведенный в предыдущем ответе от nosklo, чтобы разрешить доступ к словарю по кортежу. Решение nosklo выглядит так: class AutoVivification(dict): """Implementation of perl's autovivification feature.""" …
25 фев '13 в 22:44
2 ответа

Есть ли автовификация для Go?

Есть ли автовификация для Go? Как правильно заметил @JimB, мое определение не столь строгое. О моей цели: в Python у нас есть очень элегантная "эмуляция" для автовивификации: class Path(dict): def __missing__(self, key): value = self[key] = type(sel…
30 дек '16 в 16:11
5 ответов

Как отключить автовивификацию в Perl?

Предположим, у вас есть ОГРОМНОЕ приложение, "разработанное";) большой командой. Вот упрощенная модель потенциальной катастрофы, которая может произойти, когда кто-то слишком глубоко проверяет структуру данных. Если невозможно полностью или автомати…
26 апр '09 в 09:00