¿Cómo puedo agregar el resultado de una función de impresión a una lista?
Tengo el siguiente def que termina con una función de impresión:
from nltk.corpus import words
nltk.download('words')
correct_spellings = words.words()
from nltk.metrics.distance import jaccard_distance
from nltk.util import ngrams
from nltk.metrics.distance import edit_distance
def answer_nine(entries=['cormulent', 'incendenece', 'validrate']):
for entry in entries:
temp = [(jaccard_distance(set(ngrams(entry, 2)), set(ngrams(w, 2))),w) for w in correct_spellings if w[0]==entry[0]]
result = print(sorted(temp, key = lambda val:val[0])[0][1])
return result
answer_nine()
Tengo los tres resultados impresos correctamente, pero me gustaría tenerlos en una lista. Intenté asignarlos a una lista de muchas formas diferentes, pero siempre recibo el siguiente mensaje de error: AttributeError: El objeto de tipo ‘NoneType’ no tiene el atributo ‘append’. No entiendo por qué mi resultado tiene un tipo NoneType si tiene valores, ¿qué me falta aquí?
PD: Si quito la función de impresión así: result = sorted(temp, key = lambda val:val[0])[0][1]
Solo recibo la tercera palabra pero al menos es de tipo string.
davy.ai
El problema es que estás asignando el resultado de la función
print
a la variableresult
, la cual esNone
. En su lugar, debes asignar el resultado de la funciónsorted
a la variableresult
y luego agregar cada resultado a una lista:Esto debería darte la lista de resultados:
['corpulent', 'indecence', 'validate']
.