|
5 | 5 | start_with_prefix(prefix)
|
6 | 6 | """
|
7 | 7 | # HELPERS #
|
| 8 | + |
| 9 | + |
8 | 10 | def _get_child_branches(tr):
|
9 | 11 | return tr[1:]
|
10 | 12 |
|
| 13 | + |
11 | 14 | def _get_child_branch(tr, c):
|
| 15 | + """ |
| 16 | + Find matching branch with the character |
| 17 | + """ |
12 | 18 | for branch in _get_child_branches(tr):
|
13 | 19 | if branch[0] == c:
|
14 | 20 | return branch
|
| 21 | + |
15 | 22 | return None
|
16 | 23 |
|
| 24 | + |
17 | 25 | def _retrive_branch(k, trie_list):
|
18 |
| - if k == "": |
| 26 | + if not k: |
19 | 27 | return None
|
20 | 28 | tr = trie_list
|
21 | 29 | for c in k:
|
22 | 30 | child_branch = _get_child_branch(tr, c)
|
23 | 31 | if not child_branch:
|
24 | 32 | return None
|
25 | 33 | tr = child_branch
|
| 34 | + |
26 | 35 | return tr
|
27 | 36 |
|
| 37 | + |
28 | 38 | def _is_trie_bucket(bucket):
|
29 | 39 | if len(bucket) != 2:
|
30 | 40 | return False
|
31 |
| - if type(bucket[1]) is tuple: |
32 |
| - return True |
| 41 | + |
| 42 | + return type(bucket[1]) is tuple |
| 43 | + |
33 | 44 |
|
34 | 45 | def _get_bucket_key(bucket):
|
35 | 46 | if not _is_trie_bucket(bucket):
|
36 | 47 | return None
|
37 |
| - return bucket[1][0] |
| 48 | + |
| 49 | + return bucket[1][0] |
38 | 50 |
|
39 | 51 | # HAS_KEY #
|
| 52 | + |
| 53 | + |
40 | 54 | def has_key(k, tr):
|
41 |
| - if k == "": |
42 |
| - return None |
43 |
| - key_tuple = _retrive_branch(k, tr) |
44 |
| - if not key_tuple: |
45 |
| - return False |
46 |
| - return True |
| 55 | + return _retrive_branch(k, tr) is not None |
47 | 56 |
|
48 | 57 | # RETRIE_VAL
|
| 58 | + |
| 59 | + |
49 | 60 | def retrie_val(k, tr):
|
50 |
| - if k == "": |
51 |
| - return None |
52 | 61 | key_tuple = _retrive_branch(k, tr)
|
53 | 62 | if not key_tuple:
|
54 | 63 | return None
|
| 64 | + |
55 | 65 | return key_tuple[1]
|
56 | 66 |
|
57 | 67 |
|
58 | 68 | def insert_key(key, v, trie_list):
|
59 |
| - if key == "" or has_key(key, trie_list): |
| 69 | + if not key or has_key(key, trie_list): |
60 | 70 | return
|
61 | 71 |
|
62 | 72 | tr = trie_list
|
63 | 73 | for char in key:
|
64 | 74 | branch = _get_child_branch(tr, char)
|
65 |
| - if branch == None: |
| 75 | + if not branch: |
66 | 76 | new_branch = [char]
|
67 | 77 | tr.append(new_branch)
|
68 | 78 | tr = new_branch
|
@@ -137,7 +147,7 @@ def start_with_prefix(prefix, trie):
|
137 | 147 | Washington
|
138 | 148 | West Virginia
|
139 | 149 | Wisconsin
|
140 |
| - Wyoming""" |
| 150 | + Wyoming""" |
141 | 151 | states_list = [w.strip().lower() for w in states.splitlines() if w]
|
142 | 152 | for state in states_list:
|
143 | 153 | insert_key(state, True, trie)
|
|
0 commit comments