不区分大小写的字典搜索?[重复]

不区分大小写的字典搜索?[重复],第1张

不区分大小写字典搜索?[重复]

注意,使字典不区分大小写,无论如何意味着都可能会丢失信息:例如,您将如何“不区分大小写”

{'a': 23, 'A':45}
?如果您关心的只是某个键在字典中的位置(即,不在乎与之对应的值),请
set
改用一个替代方法-即

theset = set(k.lower() for k in thedict)

(在Python的每个版本中,或者

{k.lower() for k in thedict}
由于某些纯粹的装饰性语法糖,如果您对仅在python
2.7或更高版本中工作的代码感到满意;-),并使用进行检查
if k.lower() in theset: ...

或者,您可以创建一个包装器类,例如,一个只读类…:

import collectionsclass CaseInsensitiveDict(collections.Mapping):    def __init__(self, d):        self._d = d        self._s = dict((k.lower(), k) for k in d)    def __contains__(self, k):        return k.lower() in self._s    def __len__(self):        return len(self._s)    def __iter__(self):        return iter(self._s)    def __getitem__(self, k):        return self._d[self._s[k.lower()]]    def actual_key_case(self, k):        return self._s.get(k.lower())

这将保持(无需实际更改原始字典,因此,如果需要的话,仍然可以为它检索所有精确信息)任意可能的多个键值中的任意一个,由于情况“折叠”为单个键,不敏感,并提供字典的所有只读方法(仅带字符串键),以及

actual_key_case
返回用于任何给定字符串键的实际大小写混合的方法(或者
None
如果该给定字符串键的大小写更改不匹配字典中的任何键)
)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5674975.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存