如何实现小写变量值与字典键的忽略大小写匹配?
忽略大小写匹配字典键的解决方法
问题场景
我有一个值为全小写的document_title变量,它对应TITLE_MAP字典中某一个大小写混合的键,但直接使用以下代码判断时无法生效:
if document_title in TITLE_MAP.keys(): return True
示例代码:
TITLE_MAP = { 'AUS Marketing Consent': "DOCUMENT_TYPE_MARKETING_CONSENT", 'Consent & History': "DOCUMENT_TYPE_CONSENT", } document_title = 'aus marketing consent'
解决方案
方法1:预生成小写键映射(推荐高频判断场景)
提前将原字典的键转换为小写,生成一个新的映射字典,后续判断和取值都是O(1)时间复杂度,效率最高:
# 预生成小写键到对应值的映射 LOWERCASE_TITLE_MAP = {key.lower(): value for key, value in TITLE_MAP.items()} # 执行判断 if document_title in LOWERCASE_TITLE_MAP: return True # 如需获取对应类型,可直接取值:doc_type = LOWERCASE_TITLE_MAP[document_title]
方法2:遍历字典时忽略大小写比较
如果不需要频繁判断,不想额外占用内存存储新字典,可以直接遍历原字典的键进行小写匹配:
for key in TITLE_MAP: if key.lower() == document_title: return True
方法3:用any()简化存在性判断
仅需验证document_title是否存在匹配项时,可使用any()函数一行完成判断:
if any(key.lower() == document_title for key in TITLE_MAP): return True
内容的提问来源于stack exchange,提问作者Yazan Rashed
相关产品推荐
相关产品推荐

