TypeError: '<' при помещении элементов в приоритетную очередь - PullRequest
0 голосов
/ 23 сентября 2019

Я выполняю задачу, в которой мне нужно создать приоритетную очередь, содержащую записи в терминах кортежа и отсортированные по начальной позиции или вероятности.У меня есть класс для размещения записи в очереди в правильном порядке.При попытке ввода в очередь выдается сообщение об ошибке:

TypeError: '<' not supported between instances of 'Entry' and 'Entry'

Вот мой код:

class Entry:
    #Entry to be used

    def __init__(self, word, start_pos, log_prob, back_ptr):
        self.word=word
        self.start_pos=start_pos
        self.log_prob=log_probability
        self.back_ptr=back_ptr

Мой код для ввода элемента в приоритетную очередь:

keys= Pw.keys()
pq  = PriorityQueue()
input=""
count=0


with open("data/input/dev.txt") as f:

    #getting the input ready, ommitting newline, joining together
    for line in f:
        n_line = line.strip()
        input=n_line
        finalindex=len(input)-1
        chart = [None] * (finalindex+1)

        #initializing priorityqueue, gather candidates for first word
        inserted=0
        for allowed_length in range(1,14):
            first_word=input[0:allowed_length]
            if first_word in Pw:
                #Pw is word probability
                entry=Entry(first_word,0,log10(Pw(first_word)),None)
                #print(entry)
                pq.put((0,entry))
                inserted+=1

            if inserted==0:
            first_word=input[0]
            entry = Entry(first_word,0,log10(Pw(first_word)), None)
            pq.put((0,entry))


Я получаю ошибку в pq.put цикла for.Я могу отсортировать очередь по start_pos или log_prob.

Я пробовал это в class Entry:

def _lt_ (self, other):
    return self.start_pos<other.start_pos

Это не решило мою проблему.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...