MCPcopy Index your code
hub / github.com/clips/pattern / odict

Class odict

pattern/text/search.py:176–251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

174# (i.e., if a taxonomy term has multiple parents, the most recent parent is the default).
175
176class odict(dict):
177
178 def __init__(self, items=[]):
179 """ A dictionary with ordered keys (first-in last-out).
180 """
181 dict.__init__(self)
182 self._o = [] # List of ordered keys.
183 if isinstance(items, dict):
184 items = reversed(items.items())
185 for k, v in items:
186 self.__setitem__(k, v)
187
188 @classmethod
189 def fromkeys(cls, keys=[], v=None):
190 return cls((k, v) for k in keys)
191
192 def push(self, (k, v)):
193 """ Adds a new item from the given (key, value)-tuple.
194 If the key exists, pushes the updated item to the head of the dict.
195 """
196 if k in self:
197 self.__delitem__(k)
198 self.__setitem__(k, v)
199 append = push
200
201 def __iter__(self):
202 return reversed(self._o)
203
204 def __setitem__(self, k, v):
205 if k not in self:
206 self._o.append(k)
207 dict.__setitem__(self, k, v)
208
209 def __delitem__(self, k):
210 self._o.remove(k)
211 dict.__delitem__(self, k)
212
213 def update(self, d):
214 for k, v in reversed(d.items()):
215 self.__setitem__(k, v)
216
217 def setdefault(self, k, v=None):
218 if not k in self:
219 self.__setitem__(k, v)
220 return self[k]
221
222 def pop(self, k, *args, **kwargs):
223 if k in self:
224 self._o.remove(k)
225 return dict.pop(self, k, *args, **kwargs)
226
227 def popitem(self):
228 k=self._o[-1] if self._o else None; return (k, self.pop(k))
229
230 def clear(self):
231 self._o=[]; dict.clear(self)
232
233 def iterkeys(self):

Callers 1

appendMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…