Python中,比较相同字符串返回False
问题描述:
我知道,那种许多问题都贴在这里,但我无法找到一个我的情况相匹配。Python中,比较相同字符串返回False
我有由字典,每个字典中只包含一个键的列表,列表作为它的值。例如:keyList = [{'key1': [1,2,3]}, {'key2': [3, 4, 5]}, ...]
现在,我想创建一个简单的函数,它接收两个参数:前面提到的列表和一个键,并返回给定列表中的匹配字典。
的功能是:
def foo(someKey, someList):
for i in someList:
if str(i.keys()).lower() == str(someKey).lower():
return i
当被调用时:foo('key1', keyList)
,该函数返回的无对象的(而不是{'key1': [1,2,3]}
两个被比较的值具有相同的长度,并且是相同的类型。 (<type 'str'>
),但比较会产生False值。
感谢您提前给予任何关于问题性质的协助或/和建议
答
dict.keys()
返回在Python 3在Python 2列表中查看的对象,所以你与你在这里传递的字符串比较它们的字符串表示。取而代之的是,你可以使用in
运算符来检查词典包含密钥someKey
,当你想要做一个区分大小写的搜索,你必须申请str.lower
每个关键第一:如果
def foo(someKey, someList):
for i in someList:
if someKey.lower() in (k.lower() for k in i):
return i
而且你类型的字典总是包含一个键,那么你可以使用iter()
和next()
拿到钥匙名称:
>>> d = {'key1': [1,2,3]}
>>> next(iter(d))
'key1'
所以,foo
将是:
def foo(someKey, someList):
for i in someList:
if someKey.lower() == next(iter(i)).lower():
return i
你真的需要做大小写不敏感的比较吗? – 2014-12-06 05:14:48