MCPcopy Create free account
hub / github.com/ronreiter/interactive-tutorials / OrderedDict

Class OrderedDict

markdown/odict.py:1–162  ·  view source on GitHub ↗

A dictionary that keeps its keys in the order in which they're inserted. Copied from Django's SortedDict with some modifications.

Source from the content-addressed store, hash-verified

1class OrderedDict(dict):
2 """
3 A dictionary that keeps its keys in the order in which they're inserted.
4
5 Copied from Django's SortedDict with some modifications.
6
7 """
8 def __new__(cls, *args, **kwargs):
9 instance = super(OrderedDict, cls).__new__(cls, *args, **kwargs)
10 instance.keyOrder = []
11 return instance
12
13 def __init__(self, data=None):
14 if data is None:
15 data = {}
16 super(OrderedDict, self).__init__(data)
17 if isinstance(data, dict):
18 self.keyOrder = list(data.keys())
19 else:
20 self.keyOrder = []
21 for key, value in data:
22 if key not in self.keyOrder:
23 self.keyOrder.append(key)
24
25 def __deepcopy__(self, memo):
26 from copy import deepcopy
27 return self.__class__([(key, deepcopy(value, memo))
28 for key, value in self.items()])
29
30 def __setitem__(self, key, value):
31 super(OrderedDict, self).__setitem__(key, value)
32 if key not in self.keyOrder:
33 self.keyOrder.append(key)
34
35 def __delitem__(self, key):
36 super(OrderedDict, self).__delitem__(key)
37 self.keyOrder.remove(key)
38
39 def __iter__(self):
40 for k in self.keyOrder:
41 yield k
42
43 def pop(self, k, *args):
44 result = super(OrderedDict, self).pop(k, *args)
45 try:
46 self.keyOrder.remove(k)
47 except ValueError:
48 # Key wasn't in the dictionary in the first place. No problem.
49 pass
50 return result
51
52 def popitem(self):
53 result = super(OrderedDict, self).popitem()
54 self.keyOrder.remove(result[0])
55 return result
56
57 def items(self):
58 return list(zip(self.keyOrder, list(self.values())))
59
60 def iteritems(self):

Callers 3

constants.pyFile · 0.85
translate_sectionsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected