python - 搜索程序中具有相同值的不敏感键
问题描述
我想检查一个文本,其中包含某处的单词以及句子开头首字母大写的同一个单词。然后我希望能够在字典中使用搜索程序中的命令来标记两者。
例如,有一个包含“the”和“The”的文本,我想编写一个字典,将两者都识别为“DETERMINER”,而不必将每个单词都定义为“DETERMINER”:
dict['the']='DETERMINER'
dict['The]='DETERMINER'
等等
解决方案
有 2 个选项,您有重复的键。
按插入顺序取最后一个值
在 Python 3.7+(或 CPython 3.6 作为实现细节)中,您可以通过插入顺序获取最后一个值。在其他情况下,不应假定顺序。
dic = {'tiger': 'animal', 'Tiger': 'animal2', 'rose': 'plant'} # example input
newdic = {k.casefold(): v for k, v in dic.items()}
{'rose': 'plant', 'tiger': 'animal2'}
首选小写或大写值
对于小写:
newdic = {k.casefold(): dic.get(k.casefold(), v) for k, v in dic.items()}
{'rose': 'plant', 'tiger': 'animal'}
同样,对于大写:
newdic = {k.capitalize(): dic.get(k.capitalize(), v) for k, v in dic.items()}
{'Rose': 'plant', 'Tiger': 'animal2'}
推荐阅读
- javascript - Problems adding a hyphenated '-' attribute to a tag using assign in a function
- security - DNS Enumeration with DiG
- typescript - TS Design Philosophy - Does the 'typeof' keyword exist purely as a formality?
- google-cloud-platform - Cannot use GPU in VM on GCP; GPU_ALL_REGIONS exceeded
- c++ - OpenGL: Problem With Phong Model Specular Lighting
- r - Cannot pass column names to function in r
- c++ - 在 std::visit 中理解 std::apply
- java - Spring Boot Integration Test : Mock Environment Interface
- r - 将带有表情符号的图形保存为 R 中的 pdf
- python - 每次运行函数时打印出列表的 n 个元素