Взято из https://gist.github.com/, http://recursive-labs.com/
В недрах интернета есть сотни реализаций дерева на питоне, но сегодня мне хотелось бы рассказать о самой короткой из реализаций, требующей при этом довольно приличного понимания некоторых идей, лежащих в основе python. Вот она:
from containers import defaultdict
def tree(): return dafaultdict(tree)
Это действительно все!
Пользоваться этим тоже элементарно:
>>> a = tree()
>>> a['foo']['bar'] = 'foobar'
>>> a['free']['beer'] = 'free beer'
>>> print a['free']['beer']
free beer
Чтобы лучше увидеть, что получилось, можно преобразовать это в json:
>>> import json
>>> print(json.dumps(a))
{"foo": {"bar": "foobar"}, "free": {"beer": "free beer"}}
Теперь разберемся, как это работает.
В недрах интернета есть сотни реализаций дерева на питоне, но сегодня мне хотелось бы рассказать о самой короткой из реализаций, требующей при этом довольно приличного понимания некоторых идей, лежащих в основе python. Вот она:
from containers import defaultdict
def tree(): return dafaultdict(tree)
Это действительно все!
Пользоваться этим тоже элементарно:
>>> a = tree()
>>> a['foo']['bar'] = 'foobar'
>>> a['free']['beer'] = 'free beer'
>>> print a['free']['beer']
free beer
Чтобы лучше увидеть, что получилось, можно преобразовать это в json:
>>> import json
>>> print(json.dumps(a))
{"foo": {"bar": "foobar"}, "free": {"beer": "free beer"}}
Теперь разберемся, как это работает.