python字典不区分大小写
时间: 2023-07-25 17:06:49 浏览: 373
python代码区分大小写吗
在 Python 中,字典的 key 是区分大小写的,即使两个字符串只有大小写不同,它们也被视为不同的键。例如:
```
>>> d = {'apple': 1, 'Orange': 2, 'BANANA': 3}
>>> d['apple']
1
>>> d['Orange']
2
>>> d['banana']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'banana'
```
可以看到,当我们尝试使用一个大小写不同的键 `'banana'` 时,会出现 KeyError 错误。如果你需要不区分大小写的字典,可以通过自定义字典类来实现。下面是一个简单的示例:
```python
class CaseInsensitiveDict(dict):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._case_map = {k.lower(): k for k in self}
def __contains__(self, key):
return key.lower() in self._case_map
def __getitem__(self, key):
return super().__getitem__(self._case_map[key.lower()])
def __setitem__(self, key, value):
super().__setitem__(self._case_map.setdefault(key.lower(), key), value)
def pop(self, key, *args):
return super().pop(self._case_map.pop(key.lower()), *args)
def update(self, E=None, **F):
if E:
for k, v in E.items():
self[k] = v
for k, v in F.items():
self[k] = v
def setdefault(self, key, default=None):
return super().setdefault(self._case_map.setdefault(key.lower(), key), default)
```
这个类继承自 Python 原生的字典类,通过重载一些方法实现了不区分大小写的功能。使用方法与普通字典类似,例如:
```python
>>> d = CaseInsensitiveDict({'apple': 1, 'Orange': 2, 'BANANA': 3})
>>> d['apple']
1
>>> d['Orange']
2
>>> d['banana'] = 4
>>> d['BAnana']
4
```
阅读全文