2016-12-15 58 views
1

所以我试图比较两个字符串变量与==,它不工作的原因。例如该代码在python中比较字符串==与==运算符

print(dictionary[0]) 
print("A") 
print(dictionary[0] == "A") 

打印出

A  
A 
False 

我不明白为什么它返回False时,他们显然是相等的。

+0

是您的单词排序列表? – FallAndLearn

+0

是的,我认为这个问题不是正确比较单词 –

+3

尝试'print(repr(dictionary [0]))',你可能会在'dictionary [0]'中隐藏一些额外的字符。 – Holt

回答

0

尝试用光标选择输出 - 您会看到第一行包含一些空格。基本上,你的最后一行是等价于:

print("A " == "A") 

要摆脱那些空的空间,使用str.strip方法:

print(dictionary[0].strip()) 
print("A") 
print(dictionary[0] == "A") 

也有lstrip()rstrip()方法,只在左侧或删除空格字符串的右侧。

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]) 
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]) 
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")