Skip to content

字典树的实现 #1

@defnngj

Description

@defnngj
# 字典树
import json


class TrieTree:

    def __init__(self):
        self.root = {}

    def insert(self, item):
        current_node = self.root
        for _item in item:
            node = current_node.get(_item)
            if node is None:
                new_node = {}
                current_node[_item] = new_node
                current_node = new_node
            else:
                current_node = node
        current_node["is_file"] = True


trie_tree = TrieTree()
trie_tree.insert(item=["test_dmo.py"])
trie_tree.insert(item=["base_case", "test_001_from.py"])
trie_tree.insert(item=["base_case", "test_002_link.py"])
trie_tree.insert(item=["base_case", "test_003_iframe.py"])
trie_tree.insert(item=["more_case", "test_004_window.py"])
trie_tree.insert(item=["more_case", "test_005_ddt.py"])
trie_tree.insert(item=["more_case", "test_006_file_ddt.py"])

print(json.dumps(trie_tree.root, indent=2, ensure_ascii=False))

运行结果:

{
  "test_dmo.py": {
    "is_file": true
  },
  "base_case": {
    "test_001_from.py": {
      "is_file": true
    },
    "test_002_link.py": {
      "is_file": true
    },
    "test_003_iframe.py": {
      "is_file": true
    }
  },
  "more_case": {
    "test_004_window.py": {
      "is_file": true
    },
    "test_005_ddt.py": {
      "is_file": true
    },
    "test_006_file_ddt.py": {
      "is_file": true
    }
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions