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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions