8 from thread
import get_ident
as _get_ident
10 from dummy_thread
import get_ident
as _get_ident
13 from _abcoll
import KeysView, ValuesView, ItemsView
19 'Dictionary that remembers insertion order' 31 '''Initialize an ordered dictionary. Signature is the same as for 32 regular dictionaries, but keyword arguments are not recommended 33 because their insertion order is arbitrary. 37 raise TypeError(
'expected at most 1 arguments, got %d' %
len(args))
40 except AttributeError:
42 root[:] = [root, root,
None]
46 def __setitem__(self, key, value, dict_setitem=dict.__setitem__):
47 'od.__setitem__(i, y) <==> od[i]=y' 53 last[1] = root[0] = self.
__map[key] = [last, root, key]
54 dict_setitem(self, key, value)
57 'od.__delitem__(y) <==> del od[y]' 60 dict_delitem(self, key)
61 link_prev, link_next, key = self.
__map.
pop(key)
62 link_prev[1] = link_next
63 link_next[0] = link_prev
66 'od.__iter__() <==> iter(od)' 69 while curr
is not root:
74 'od.__reversed__() <==> reversed(od)' 77 while curr
is not root:
82 'od.clear() -> None. Remove all items from od.' 87 root[:] = [root, root,
None]
89 except AttributeError:
94 '''od.popitem() -> (k, v), return and remove a (key, value) pair. 95 Pairs are returned in LIFO order if last is true or FIFO order if false. 99 raise KeyError(
'dictionary is empty')
113 value = dict.pop(self, key)
119 'od.keys() -> list of keys in od' 123 'od.values() -> list of values in od' 124 return [self[key]
for key
in self]
127 'od.items() -> list of (key, value) pairs in od' 128 return [(key, self[key])
for key
in self]
131 'od.iterkeys() -> an iterator over the keys in od' 135 'od.itervalues -> an iterator over the values in od' 140 'od.iteritems -> an iterator over the (key, value) items in od' 145 '''od.update(E, **F) -> None. Update od from dict/iterable E and F. 147 If E is a dict instance, does: for k in E: od[k] = E[k] 148 If E has a .keys() method, does: for k in E.keys(): od[k] = E[k] 149 Or if E is an iterable of items, does: for k, v in E: od[k] = v 150 In either case, this is followed by: for k, v in F.items(): od[k] = v 154 raise TypeError(
'update() takes at most 2 positional ' 155 'arguments (%d given)' % (
len(args),))
157 raise TypeError(
'update() takes at least 1 argument (0 given)')
163 if isinstance(other, dict):
165 self[key] = other[key]
166 elif hasattr(other,
'keys'):
167 for key
in other.keys():
168 self[key] = other[key]
170 for key, value
in other:
172 for key, value
in kwds.items():
179 def pop(self, key, default=__marker):
180 '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. 181 If key is not found, d is returned if given, otherwise KeyError is raised. 193 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' 200 'od.__repr__() <==> repr(od)' 201 call_key =
id(self), _get_ident()
202 if call_key
in _repr_running:
204 _repr_running[call_key] = 1
207 return '%s()' % (self.__class__.__name__,)
208 return '%s(%r)' % (self.__class__.__name__, self.
items())
210 del _repr_running[call_key]
213 'Return state information for pickling' 214 items = [[k, self[k]]
for k
in self]
215 inst_dict = vars(self).
copy()
217 inst_dict.pop(k,
None)
219 return (self.__class__, (items,), inst_dict)
220 return self.__class__, (items,)
223 'od.copy() -> a shallow copy of od' 224 return self.__class__(self)
228 '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S 229 and values equal to v (which defaults to None). 238 '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive 239 while comparison to a regular mapping is order-insensitive. 242 if isinstance(other, OrderedDict):
243 return len(self)==
len(other)
and self.
items() == other.items()
244 return dict.__eq__(self, other)
247 return not self == other
252 "od.viewkeys() -> a set-like object providing a view on od's keys" 253 return KeysView(self)
256 "od.viewvalues() -> an object providing a view on od's values" 257 return ValuesView(self)
260 "od.viewitems() -> a set-like object providing a view on od's items" 261 return ItemsView(self)
def pop(self, key, default=__marker)
def __delitem__(self, key, dict_delitem=dict.__delitem__)
def __init__(self, args, kwds)
def setdefault(self, key, default=None)
def popitem(self, last=True)
def fromkeys(cls, iterable, value=None)
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
def __setitem__(self, key, value, dict_setitem=dict.__setitem__)
def __repr__(self, _repr_running={})