搜索程序中具有相同值的不敏感键
Insensitive keys with the same value in a searching program
我想检查一段文本,该文本在某处包含一个词,并且该词的首字母大写位于句子的开头。然后我希望能够在字典中使用搜索程序中的命令将两者标记为相同。
例如,有一个包含 'the' 和 'The' 的文本我想编写一个将两者都识别为 'DETERMINER' 的字典,而不必将每个单词都定义为 'DETERMINER' 乏味:
dict['the']='DETERMINER'
dict['The]='DETERMINER'
等等
你可以这样做:
dic = {'tiger':'animal','Tiger':'animal','rose':'plant'}
result = { key.lower() : value for key, value in dic.items() }
print(result)
输出
{'tiger': 'animal', 'rose': 'plant'}
有 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'}
既然你是初学者,我会建议你更详细的代码:
dic = {'tiger':'animal','Tiger':'animal','rose':'plant'}
result = {}
for key in dic:
dic[key.lower()] = dic[key] # the key is always in lower case. If it exists already, it will be overriden.
print(result)
这应该可以帮助您入门。您可以检查同一个小写键的不同值并抛出错误。
我想检查一段文本,该文本在某处包含一个词,并且该词的首字母大写位于句子的开头。然后我希望能够在字典中使用搜索程序中的命令将两者标记为相同。
例如,有一个包含 'the' 和 'The' 的文本我想编写一个将两者都识别为 'DETERMINER' 的字典,而不必将每个单词都定义为 'DETERMINER' 乏味:
dict['the']='DETERMINER'
dict['The]='DETERMINER'
等等
你可以这样做:
dic = {'tiger':'animal','Tiger':'animal','rose':'plant'}
result = { key.lower() : value for key, value in dic.items() }
print(result)
输出
{'tiger': 'animal', 'rose': 'plant'}
有 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'}
既然你是初学者,我会建议你更详细的代码:
dic = {'tiger':'animal','Tiger':'animal','rose':'plant'}
result = {}
for key in dic:
dic[key.lower()] = dic[key] # the key is always in lower case. If it exists already, it will be overriden.
print(result)
这应该可以帮助您入门。您可以检查同一个小写键的不同值并抛出错误。