Estoy tratando de reescribir este código de Python2 a la sintaxis aceptada de Python3. Los métodos .index() generan el siguiente error:
AttributeError: el objeto 'dict_values' no tiene atributo 'index'
Esto se debe a que .index() no es una sintaxis válida en Python3. He leído que se debe usar una lista para solucionar el problema, pero no sé cómo hacerlo. ¿Alguien tiene alguna idea de cómo solucionar el problema?
words1 = [self._word_to_id.keys()[self._word_to_id.values().index(data_x[index])] for index in range(len(puncts) - 1)] indices = [i for i, w in enumerate(words1) if w in PUNCTUATIONS] for i in indices: words1[i], words1[i-1] = words1[i-1], words1[i] words2 = [self._word_to_id.keys([self._word_to_id.values().index(data_x[index])] for index in range(len(puncts) - 1, len(data_x))] all_words = words1 + [puncts[-1]] + words2 content = ' '.join(all_words) min_step = len(puncts)Está llamando a self._word_to_id.values() que devuelve la clase dict_values y no list . dict_values no hereda de la list y no tiene el método de index por eso.
Debe convertir los valores de su diccionario en una list para usar la función index . Prueba esto:
list(self._word_to_id.values()).index(data_x[index])words1 = [list(self._word_to_id.keys())[list(self._word_to_id.values()).index(data_x[index])] for index in range(len(puncts) - 1)]