from requests.structures import CaseInsensitiveDict
或者如果要查看代码:
class CaseInsensitiveDict(dict):
"""Basic case insensitive dict with strings only keys."""
proxy = {}
def __init__(self, data):
self.proxy = dict((k.lower(), k) for k in data)
for k in data:
self[k] = data[k]
def __contains__(self, k):
return k.lower() in self.proxy
def __delitem__(self, k):
key = self.proxy[k.lower()]
super(CaseInsensitiveDict, self).__delitem__(key)
del self.proxy[k.lower()]
def __getitem__(self, k):
key = self.proxy[k.lower()]
return super(CaseInsensitiveDict, self).__getitem__(key)
def get(self, k, default=None):
return self[k] if k in self else default
def __setitem__(self, k, v):
super(CaseInsensitiveDict, self).__setitem__(k, v)
self.proxy[k.lower()] = k
使用听写理解(Python2.7+)
如果您的python太旧而无法理解dict
然后用小写版本的键查找该值
请注意,不管怎样,使字典不区分大小写可能会丢失信息:例如,如何“不区分大小写”
{'a': 23, 'A': 45}
?!如果你只关心一个键在dict中的位置与否(即,不关心它对应的值),那么做一个set
代替——即(在每一个Python版本中,或者
{k.lower() for k in thedict}
如果您对仅在Python 2.7或更高版本中工作的代码感到满意,那么为了一些纯粹的装饰性语法糖;-),请使用if k.lower() in theset: ...
进行检查。或者,你可以创建一个包装类,例如,一个只读类……:
这将保留(实际上不改变原始字典,因此在需要时仍然可以为其检索所有精确信息)由于大小写不敏感而“折叠”为单个键的键的可能多个值中的任意一个,并提供字典的所有只读方法(仅限字符串键)加上
actual_key_case
方法返回用于任何给定字符串键的实际大小写组合(或者如果给定字符串键的大小写转换与字典中的任何键都不匹配,则返回None
)。开始使用真正的不区分大小写字典,方法是:
或者如果要查看代码:
相关问题 更多 >
编程相关推荐