class SortedDictIterator: def __init__(self, dict): self.dict = dict self.keys = dict.keys() self.index = 0 self.length = len(self.keys) def next(self): if self.length <= self.index: raise StopIteration retval = self.keys[self.index] self.index += 1 return retval class SortedDict(dict): def __setitem__(self, name, value): try: value = value.strip() except: pass dict.__setitem__(self, name.lower(), value) def __iter__(self): return SortedDictIterator(self) def keys(self): keys = dict.keys(self) keys.sort() return keys def popitem(self): keys = self.keys() if len(keys) < 1: raise KeyError("popitem(): dictionary is empty") retval = (keys[0], dict.__getitem__(self, keys[0])) dict.__delitem__(self, keys[0]) return retval