In Python 2.7 möchte ich die Ähnlichkeit zwischen einer Zeichenfolge und Strings in einer Liste überprüfen, bis eine Übereinstimmung gefunden wird."TypeError: Bool ist nicht iterierbar" in jeder() Iteration mit booleschen Kriterien
from difflib import SequenceMatcher
def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
correctList = ["thanks", "believe", "definitely"]
myString = "thansk"
for correctWord in correctList:
ratio = similar(correctWord, myString)
if ratio > 0.9:
myString = correctWord
break
print myString
>>> "thanks"
Ich mag die for
Iteration in weniger Zeilen vereinfachen, um so etwas wie:
if similar(myString, any([correctWord for correctWord in correctList])) > 0.9:
myString = correctWord
ich über die richtige Logik hier nicht ganz sicher bin, aber in jedem Fall Varianten dieser Syntax führt den Fehler:
TypeError: ("'bool' object is not iterable", u'occurred at index 0')
Was den richtigen Weg, dies zu erreichen wäre?
'any' die boolean-ness jedes Element einer Sequenz überprüft und gibt True zurück, wenn einer wurde dann Wahr und Falsch angesehen, wenn sie alle falsch sind, was Sie versuchen zu Benutze es stattdessen für? –