You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

57 lines
1.4 KiB

from types import DictType
from UserDict import UserDict
class odict(UserDict):
def __init__(self, dictOrTuple = None):
self._keys = []
UserDict.__init__(self, dictOrTuple)
def __delitem__(self, key):
UserDict.__delitem__(self, key)
self._keys.remove(key)
def __setitem__(self, key, item):
UserDict.__setitem__(self, key, item)
if key not in self._keys: self._keys.append(key)
def clear(self):
UserDict.clear(self)
self._keys = []
def copy(self):
newInstance = odict()
newInstance.update(self)
return newInstance
def items(self):
return zip(self._keys, self.values())
def keys(self):
return self._keys[:]
def popitem(self):
try:
key = self._keys[-1]
except IndexError:
raise KeyError('dictionary is empty')
val = self[key]
del self[key]
return (key, val)
def setdefault(self, key, failobj = None):
if key not in self._keys:
self._keys.append(key)
return UserDict.setdefault(self, key, failobj)
def update(self, dictOrTuple):
if isinstance(dictOrTuple, DictType):
itemList = dictOrTuple.items()
else:
itemList = dictOrTuple
for key, val in itemList:
self.__setitem__(key,val)
def values(self):
return map(self.get, self._keys)