willb (owner)

Revisions

gist: 143743 Download_button fork
public
Public Clone URL: git://gist.github.com/143743.git
Embed All Files: show embed
ord_dict.py #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class ord_dict(dict):
    """ ord_dict is a dict that remembers the order in which its keys were originally inserted"""
    def __init__(self):
        self.ord_keys = []
        
    def keys(self):
        return list(self.ord_keys)
    
    def __setitem__(self, key, value):
        if not self.has_key(key):
            self.ord_keys.append(key)
        super(ord_dict, self).__setitem__(key, value)
    
    def __iter__(self):
        def od_iterator(ls, od):
            for val in ls:
                yield ((val, od[val]))
        return od_iterator(self.ord_keys, self)