这个问题已经在这里有了答案 :
不区分大小写的字典 (10个答案)
2年前关闭。
我可以使用map使用Python实现不区分大小写的列表搜索。
a = ['xyz', 'wMa', 'Pma'];
b = map(string.lower, a)
if 'Xyz'.lower() in b:
print 'yes'
我如何用字典做同样的事情?
我尝试了以下代码,但是ap具有[‘a’,’b’,’c’]的列表,而不区分大小写的字典。
a = {'a':1, 'B':2, 'c':3}
ap = map(string.lower, a)
注意,使字典不区分大小写,无论如何意味着都可能会丢失信息:例如,您将如何“不区分大小写” {'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 collections
class 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
如果该给定字符串键的大小写更改不匹配字典中的任何键)
)。
我有一本区分大小写的字典, 所以我可以在这本字典里找到区分大小写的键。 例如,我可以有下面的键值对, {test,10} {测试,20} {test1,30} {test2,40} ... 当有人传递密钥时,我想检索该值。检索应该部分不区分大小写,这意味着,如果匹配准确的大小写,则返回区分大小写的结果,如果区分大小写的键不存在,则检索区分大小写的键值。 例如,在字典中插入上述值 如果用户通过“测试
问题内容: 我正在尝试使用JavaScript中的两个字符串进行不区分大小写的搜索。 通常情况如下: 该标志将不区分大小写。 但是我需要搜索第二个字符串。没有标志,它可以完美地工作: 如果我在上面的示例中添加标志,它将搜索searchstring而不是变量“ searchstring”中的内容(下一个示例不起作用): 我该如何实现? 问题答案: 是的,使用而不是。调用的结果将返回匹配自身的实际字符
我需要一个像
问题内容: 我有一个Lucene索引,该索引当前区分大小写。我想添加的 选项 有不区分大小写作为后备的。这意味着与案例匹配的结果将获得更大的权重,并且将首先出现。例如,如果结果数限制为10,并且有10个匹配项符合我的情况,那就足够了。如果仅找到7个结果,则可以从不区分大小写的搜索中再添加3个结果。 我的案子实际上更复杂,因为我有不同重量的物品。理想情况下,匹配“错误”的表壳会增加一些重量。不用说,
问题内容: 我希望我的字典不区分大小写。 我有以下示例代码: 输出=练习更改颜色 我想要另一个字符串,(以大写字母开头)也给出相同的输出。 我相信有一种使用转换为小写字母的通用方法, 但是我不确定如何将其最好地集成到我的现有代码中。(如果无论如何这将是一种合理,简单的方法)。 问题答案: 如果我对您的理解正确,并且希望以一种不区分大小写的方式键入字典的键,则一种方法是将dict子类化并重载sett
我正在寻找一种性能良好的方法来支持不区分大小写、不区分重音的搜索。到目前为止,我们使用MSSql server在这方面没有问题,在Oracle上我们必须使用OracleText,现在我们在PostgreSQL上需要它。 我找到了这篇关于它的帖子,但我们需要将它与不区分大小写结合起来。我们还需要使用索引,否则性能可能会受到影响。有没有关于大型数据库的最佳方法的实际经验?
问题内容: 和其他比较运算符等的默认行为区分大小写。 是否可以使它们不区分大小写? 问题答案: 从10gR2开始,Oracle允许通过设置和会话参数来微调字符串比较的行为: 您还可以创建不区分大小写的索引: 该信息来自Oracle不区分大小写的搜索。文章提到了,但似乎也适用于旧版本。 在10gR2之前的版本中,这实际上是做不到的,如果不需要 区分重音符号的 搜索,通常的方法是只对列和搜索表达式都使
问题内容: 我尝试在elasticsearch.yml文件中创建一个条目,以针对要点中提到的内容创建自定义分析器: https //gist.github.com/1403902 但我得到以下错误 我仍然不知道如何做到这一点。我已经在stackoverflow上搜索了相同的内容,并得到了类似的回复(如上述要点所述) 请给我一个例子,我可以测试。 问题答案: 由于配置文件在启动时是只读的,因此要使更