Этот вопрос о реализации полного Perl autovivification в Python. Я знаю, что подобные вопросы задали, прежде и до сих пор лучший ответ находится в, "Что лучший способ состоит в том, чтобы реализовать вложенные словари в Python?". Однако я надеюсь делать это:
a['x']['y'].append('z')
без объявления a['x']['y'] = []
во-первых, или скорее не объявление a['x'] = {}
также. (Отметьте в Perl, который можно сделать push @{$a->{x}{y}}, 'z';
.)
Я знаю dict
и list
вид классов не смешивается, таким образом, это твердо, но я интересуюсь наблюдением, если у кого-то есть оригинальное решение, вероятно, включающее создание наследованного класса от dict
но определенный новое append
метод на нем?
Я также знаю, что это могло бы отбросить некоторых пуристов Python, которые попросят, чтобы я придерживался Perl. Но, даже только для проблемы, я хотел бы видеть что-то.
a = collections.defaultdict(lambda: collections.defaultdict(list))
Возможно, это решит вашу потребность в любом количестве «Размеры» в вашем словаре:
a= collections.defaultdict(list)
единственное изменение в вашем коде:
a['x', 'y'].append('z')
Конечно, это решение, которое вы хотите, зависит от двух условий:
Если хотя бы одно из этих двух условий верно, мое решение вам не поможет.