采取从requests
包一看CaseInsensitiveDict
。
虽然它在一个不相关的包中,但您可能已经在您的项目中使用它了。如果没有,或者你不想要依赖(很好避免),你可以复制代码或将它用作你自己实现的灵感。
一个优点是,CaseInsensitiveDict
支持一般词典的方法,包括操作者in
:
from requests.structures import CaseInsensitiveDict
d = CaseInsensitiveDict({'Name': 'Zara', 'Age': 7, 'Class': 'First'})
>>> d.get('NAME')
'Zara'
>>> d.get('name')
'Zara'
>>> d['NaMe']
'Zara'
>>> d['NoName']
Traceback (most recent call last):
...
KeyError: 'noname'
>>> 'NoName' in d
False
>>> 'Name' in d
True
>>> 'NAME' in d
True
等
一个缺点是,该键必须是字符串。另一个原因是,只有一个每个键的情况下,变型是允许的(但是这尴尬/无厘头反正):
>>> CaseInsensitiveDict({'Name': 123, 'name': 456, 'NaMe': 789})
{'NaMe': 789}
你可能是指'name' /'Name' /'NaMe' /'naME'? –
此外请不要命名变量'list','dict'等。它会覆盖对“dict”类的引用。 –
如果字典包含(例如)“名称”和“名称”键,会发生什么? –