2016-12-15 2 views
1

したがって、2つの文字列変数を==と比較しようとしていて、なんらかの理由で機能しません。彼らは明らかに等しいとき、それはFalseを返す理由たとえば、このコードPythonの==演算子と等しいかどうかの文字列を比較する

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

プリントアウト

A  
A 
False 

は、私は理解していません。

+0

あなたのソートされた単語のリストですか? – FallAndLearn

+0

はい、それは単語を正しく比較していないと思う問題です。 –

+3

'print(repr(dictionary [0]))'を試してみると、いくつか余分な文字が 'dictionary [0]'に隠されているかもしれません。 – Holt

答えて

0

カーソルで出力を選択してみてください。最初の行には空白が含まれています。 str.stripメソッドを使用し、

print("A " == "A") 

は、これらの空のスペースを取り除くために:基本的には、あなたの最後の行は同等です

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 

可能な理由は、多分それはスペースを削除したり、文字列len(dictionary[0])

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

あなたにの長さをチェックするためにstrip()を使用しようと スペースが含まれている、長さこの状況にある可能性があります。

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

辞書に保存されている内容を正確に把握してください。 2つのオブジェクトが等価であるのと同じ方法で印刷されるためではありません。あなたは、これはそれについての詳細を知るために作ってみることができます

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") 
関連する問題