2

我试过:

d = {3:'a',2:'b'}

if 'B' in d.values():
    print 'True'

对我B来说等于b,但我不想改变我的字典。

是否可以根据字典的值测试不区分大小写的匹配?

如何'B'在不更改值的情况下检查字典中是否存在?

#

更复杂:

d = {3:'A',2:'B',6:'c'}
4

4 回答 4

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
于 2013-09-06T10:03:44.103 回答
1
if 'b' in map(str.lower, d.values()):
   ...
于 2013-09-06T10:04:39.707 回答
0
if filter(lambda x:d[x] == 'B', d):
  print "B is present
else:
  print "b is not present"
于 2013-09-06T10:18:12.560 回答
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)
于 2013-09-06T11:08:50.337 回答