所以我试图将两个字符串变量与==
进行比较,但由于某种原因它不起作用。例如这段代码
print(dictionary[0])
print("A")
print(dictionary[0] == "A")
打印出来
A
A
False
我不明白为什么当它们明显相等时会返回False
。
答案 0 :(得分:1)
它适用于我
dictionary = {0:"A"}
print(dictionary[0])
print("A")
print(dictionary[0] == "A")
result:
A
A
True
可能的原因是长度,也许它包含空间
尝试使用strip()
删除空格或检查字符串len(dictionary[0])
print(dictionary[0].strip() == "A")
print len( dictionary[0] )
答案 1 :(得分:0)
尝试用光标选择输出 - 您将看到第一行包含一些空格。基本上,你的最后一行相当于:
public function saveToDisk(){
$managerObject = app()->make('path\to\class\PagesManagerInterface');
$managerObject->writeToFile();
}
要删除这些空格,请使用str.strip方法:
print("A " == "A")
答案 2 :(得分:0)
您可能处于这种情况
class Alike(object):
def __eq__(self, obj):
"""called on =="""
return False
def __repr__(self):
"""called on print"""
return "A"
a_obj = Alike()
print(a_obj, a_obj == "A")
确保准确知道词典中存储的内容。这不是因为两个对象的打印方式与它们相同。
你可以尝试让它更多地了解它:
print type(dictionary[0]), len(dictionary[0])
答案 3 :(得分:0)
您的列表包含一个末尾有空格的字符串,或者项目编号0不是字符串,而是一个对象,打印为" A"。
class hex_number:
def __init__(self,number):
self.number = number
def __repr__(self):
return '%X' % self.number
d = {0:'A ', 1:hex_number(10)}
for i in range(2):
print '{}: <{}>; <{}> == <{}>? => {}'.format(i,d[i],d[i],"A",d[i]=="A")