我试图了解以下内容无效的原因:
我有一本字典;
ex = {'CA':'San Francisco', 'NV':'Las Vegas'}
我尝试使用if else
语句来获取'yes'
:
>>> if ex['CA'] is 'San Francisco':
... print 'yes'
... else:
... print 'no'
...
no
>>>
>>>
>>> if ex['CA'] == 'San Francisco' is True:
... print 'yes'
... else:
... print 'no'
...
no
>>> if ex['CA'] == 'San Francisco' is True:
... print 'yes'
...
>>>
在这里,我没有得到'yes'
我想了解为什么我没有'yes'
>>> ex['CA'] == 'San Francisco'
True
>>> ex['CA']
'San Francisco'
如果我想使用字典键的条件语句等于某个值,会有什么其他方法?
答案 0 :(得分:3)
您正在将ex['CA']
与'San Francisco'
进行比较(这是正常的),之后您将'San Francisco'
与True
进行比较,但总是失败:结果始终为false(编辑的正确性:根本原因描述错误,但修复方法相同)
所以代码没有按照你的想法去做。
该工作:
if (ex['CA'] == 'San Francisco') is True:
但是pythonic方式仍然存在:
if ex['CA'] == 'San Francisco':
is True
有效,但我想将其保留为非常特殊的用途,当您要区分非{0}的非零值(或12
)时1
其他用法使其变得多余。
顺便说一句,我不能让你写True
并侥幸逃脱。您 使用if ex['CA'] is 'San Francisco':
。 ==
是一个单例,因此True
有效,但字符串无法保证,它依赖于实现。有关详细信息,请参阅Python string interning。