栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

{'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
如果该给定字符串键的大小写更改不匹配字典中的任何键)
)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669726.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号