有可能在dict中跳过区分大小写?

时间:2013-09-06 10:02:01

标签: 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'}

3 个答案:

答案 0 :(得分:3)

你必须遍历这些值:

if any('B' == value.upper() for value in d.itervalues()):
    print 'Yup'

对于Python 3,将.itervalues()替换为.values()。这测试了最小数量的值;没有创建中间列表,any()循环在找到匹配的那一刻终止。

演示:

>>> d = {3:'a',2:'b'}
>>> if any('B' == value.upper() for value in d.itervalues()):
...     print 'Yup'
... 
Yup

答案 1 :(得分:1)

if 'b' in map(str.lower, d.values()):
   ...

答案 2 :(得分:0)

试试这个..

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)