2016-12-15 4 views
1

Так что я пытаюсь сравнить две строковые переменные с == и по какой-то причине не работает. Например, этот кодСравнение строки для равенства с оператором == в python

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

печатает

A  
A 
False 

Я не понимаю, почему она возвращается False, когда они, очевидно, равны.

+0

Ваш список слов отсортирован? – FallAndLearn

+0

Да, это проблема, я думаю, что это не правильное сравнение слов. –

+3

Попробуйте 'print (repr (dictionary [0]))', у вас могут быть дополнительные символы, скрытые в словаре [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

You может быть в этой ситуации

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

 Смежные вопросы

  • Нет связанных вопросов^_^