Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. class RadixTree(object):
  2. tree = {"ab":{"c":"エビゾー", "e": "阿部総理", "": "fuck"}}
  3. def __init__(self):
  4. pass
  5. def add(self, path, answer, parent=None):
  6. if parent == None:
  7. parent = self.tree
  8. for branch in parent.keys():
  9. if path[:len(branch)] == branch and isinstance(parent[branch], dict):
  10. ans = parent[branch]
  11. if (len(path) - len(branch)) == 0:
  12. ans[path[len(branch):]] = answer
  13. return ans
  14. else:
  15. parent[path[len(branch):]] = self.add(path[len(branch):], answer, parent=ans)
  16. return parent
  17. parent[path] = answer
  18. return parent
  19.  
  20. def search(self, path, branches=None):
  21. if branches == None:
  22. branches = self.tree
  23. for branch in branches.keys():
  24. if path[:len(branch)] == branch:
  25. if isinstance(branches[branch], str):
  26. if branch == path:
  27. return branches[branch]
  28. else:
  29. continue
  30. return self.search(path[len(branch):],branches[branch])
  31.  
  32.  
  33.  
  34.  
  35. e = RadixTree()
  36. e.search("abc")
  37. e.add("ebizo", "えびぞう")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement