Python 是否可以跳过dict中的区分大小写?
我试过:Python 是否可以跳过dict中的区分大小写?,python,dictionary,case-sensitive,Python,Dictionary,Case Sensitive,我试过: d = {3:'a',2:'b'} if 'B' in d.values(): print 'True' 对我来说,B等于B,但我不想更改我的字典 是否可以根据字典的值测试不区分大小写的匹配 如何在不更改值的情况下检查字典中是否存在'B' # 更复杂的是: d = {3:'A',2:'B',6:'c'} 您必须循环使用以下值: if any('B' == value.upper() for value in d.itervalues()): print 'Yup'
d = {3:'a',2:'b'}
if 'B' in d.values():
print 'True'
对我来说,B
等于B
,但我不想更改我的字典
是否可以根据字典的值测试不区分大小写的匹配
如何在不更改值的情况下检查字典中是否存在'B'
#
更复杂的是:
d = {3:'A',2:'B',6:'c'}
您必须循环使用以下值:
if any('B' == value.upper() for value in d.itervalues()):
print 'Yup'
对于Python 3,将.itervalues()
替换为.values()
。这测试了最小数量的值;没有创建中间列表,并且any()
循环在找到匹配项时终止
演示:
您必须循环使用以下值:
if any('B' == value.upper() for value in d.itervalues()):
print 'Yup'
对于Python 3,将.itervalues()
替换为.values()
。这测试了最小数量的值;没有创建中间列表,并且any()
循环在找到匹配项时终止
演示:
试试这个
import sys
d = {3:'A',2:'B',6:'c'}
letter = (str(sys.argv[1])).lower()
if filter(lambda x : x == letter ,[x.lower() for x in d.itervalues()]):
print "%s is present" %(letter)
else:
print "%s is not present" %(letter)
试试这个
import sys
d = {3:'A',2:'B',6:'c'}
letter = (str(sys.argv[1])).lower()
if filter(lambda x : x == letter ,[x.lower() for x in d.itervalues()]):
print "%s is present" %(letter)
else:
print "%s is not present" %(letter)
您还可以创建不区分大小写的dict:您还可以创建不区分大小写的dict:最好使用
imap
和dict.itervalues()
,因为它返回一个迭代器。@AshwiniChaudhary这更干净,而且在python 3上可以惰性地工作。我怀疑他是否有一个超过1.000.000个值的字典,所以这没什么大不了的:)是的,在py3.x中map
已经返回了一个迭代器,但在py2.x中它将首先创建一个列表,然后在其中查找'b'
。相关:最好使用imap
和dict.itervalues()
,因为它返回一个迭代器。@AshwiniChaudhary这更干净,在python 3上可以惰性地工作。我怀疑他是否有一个超过1.000.000个值的字典,所以这没什么大不了的:)是的,在py3.x中map
已经返回了一个迭代器,但在py2.x中它将首先创建一个列表,然后在其中查找'b'
。相关:问题是关于不区分大小写的搜索。问题是关于不区分大小写的搜索。
import sys
d = {3:'A',2:'B',6:'c'}
letter = (str(sys.argv[1])).lower()
if filter(lambda x : x == letter ,[x.lower() for x in d.itervalues()]):
print "%s is present" %(letter)
else:
print "%s is not present" %(letter)