|
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