阿小信大人的头像
Life is short (You need Python) Bruce Eckel

python自定义字典2014-09-03 03:11

自定义一个不区分大小key的字典。即d = {'a' : 0} 那么 d['a']d['A']都可以得到0

自定义dict:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/usr/bin/env python
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()

demo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/usr/bin/env python
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

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Python#   阅读[2105] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

网友220.*.*.161[北京]2021-07-27 01:16
网友54.*.*.128[法国]2021-07-27 01:14
网友40.*.*.5[美国]2021-07-27 01:14
网友220.*.*.100[北京]2021-07-27 00:16

发表评论