File size: 716 Bytes
5c26f44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class CaseInsensitiveDict(dict):
    def __init__(self, *args, **kwargs):
        self._keystore = {}
        d = dict(*args, **kwargs)
        for k in list(d.keys()):
            self._keystore[self._get_lower(k)] = k
        return super(CaseInsensitiveDict,self).__init__(*args,**kwargs)

    def __setitem__(self, k, v):
        self._keystore[self._get_lower(k)] = k
        return super(CaseInsensitiveDict, self).__setitem__(k, v)

    def __getitem__(self, k):
        return super(CaseInsensitiveDict,
                self).__getitem__(self._keystore[self._get_lower(k)])
    @staticmethod
    def _get_lower(k):
        if isinstance(k,str):
            return k.lower()
        else:
            return k