Skip to content

Instantly share code, notes, and snippets.

@axiaoxin
Last active August 29, 2015 14:19
Show Gist options
  • Select an option

  • Save axiaoxin/35fda4a3153a0315938d to your computer and use it in GitHub Desktop.

Select an option

Save axiaoxin/35fda4a3153a0315938d to your computer and use it in GitHub Desktop.
case_insensitive_dict.py
class case_insensitive_dict(dict):
def _lower_keys(self):
return map(str.lower, self.keys())
def __getitem__(self, key):
return self.items()[self._lower_keys().index(key.lower())][1]
def __contains__(self, key):
return key.lower() in self._lower_keys()
from case_insensitive_dict import case_insensitive_dict
d = case_insensitive_dict(zip('AbCdE', range(5)))
assert d == {'A': 0, 'C': 2, 'b': 1, 'E': 4, 'd': 3}
assert d['a'] == 0
assert d['A'] == 0
assert d['B'] == 1
assert d['c'] == 2
assert d['D'] == 3
assert d['e'] == 4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment