Tree Query
bigtree.tree.query
query_tree
Query tree using Tree Definition Language.
- Supports clauses: AND, OR, NOT
- Supports operation: ==, !=, >, <, >=, <=, BETWEEN, IN, LIKE
- Note that string match in query must be in double quotes
Examples:
>>> from bigtree import Node, Tree
>>> paths = {
... "a": {"age": 90},
... "a/b": {"age": 65},
... "a/c": {"age": 60},
... "a/b/d": {"age": 40},
... "a/b/e": {"age": 35},
... "a/c/f": {"age": 38},
... "a/b/e/g": {"age": 10},
... "a/b/e/h": {"age": 6},
... }
>>> tree = Tree.from_dict(paths)
>>> tree.show(all_attrs=True)
a [age=90]
βββ b [age=65]
β βββ d [age=40]
β βββ e [age=35]
β βββ g [age=10]
β βββ h [age=6]
βββ c [age=60]
βββ f [age=38]
Field-based comparisons
>>> results = tree.query('age >= 30 AND is_leaf OR node_name IN ["a"]')
>>> [result.node_name for result in results]
['a', 'd', 'f']
Path-based conditions
>>> results = tree.query('path_name LIKE ".*/b/.*"')
>>> [result.node_name for result in results]
['d', 'e', 'g', 'h']
Nested attribute conditions
>>> results = query_tree(root, "parent.is_root")
>>> [result.node_name for result in results]
['b', 'c']
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tree_node
|
T
|
tree to query |
required |
query
|
str
|
query |
required |
debug
|
bool
|
if True, will print out the parsed query |
False
|
Returns:
| Type | Description |
|---|---|
list[T]
|
List of nodes that fulfil the condition of query |