2016-12-15 2 views
1

So versuche ich, zwei String-Variablen mit == zu vergleichen, und es funktioniert aus irgendeinem Grund nicht. Zum Beispiel dieser CodeVergleichen der Zeichenfolge für die Gleichheit mit == Operator in Python

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

druckt

A  
A 
False 

verstehe ich nicht, warum es False zurückkehrt, wenn sie eindeutig gleich sind.

+0

ist Ihre Wörterliste sortiert? – FallAndLearn

+0

Ja es ist, das Problem, ich denke, es ist nicht Wörter richtig vergleichen –

+3

Versuchen Sie 'print (repr (Wörterbuch [0]))', können Sie einige zusätzliche Zeichen in 'Wörterbuch [0]' versteckt haben. – Holt

Antwort

0

Versuchen Sie, die Ausgabe mit dem Cursor auszuwählen - Sie werden sehen, dass die erste Zeile einige Leerzeichen enthält. Grundsätzlich Ihre letzte Zeile entspricht:

print("A " == "A") 

Um dieser leeren Räume loszuwerden, verwenden str.strip Methode:

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

Es gibt auch lstrip() und rstrip() Methoden, Whitespaces nur auf der linken Seite zu entfernen oder rechte Seite der Saite.

1

es mir arbeitet

dictionary = {0:"A"} 
print(dictionary[0]) 
print("A") 
print(dictionary[0] == "A") 


result: 
A 
A 
True 

möglicher Grund ist die Länge, die es vielleicht Raum enthalten versuchen strip() zu verwenden, um den Raum zu entfernen oder die Länge eines Strings überprüfen len(dictionary[0])

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

Sie könnte in dieser Situation sein

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

Stellen Sie sicher, dass Sie genau wissen, was in Ihrem Wörterbuch gespeichert ist. Dies liegt nicht daran, dass zwei Objekte auf dieselbe Weise gedruckt werden, wie sie gleich sind.

Sie können versuchen, diese mehr zu wissen zu machen:

print type(dictionary[0]), len(dictionary[0]) 
0

Entweder Ihre Liste einen String mit Leerzeichen am Ende enthält oder die Artikelnummer 0 ist kein String, sondern ein Objekt, das heißt gedruckt als ein "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") 
Verwandte Themen