Ich habe eine Liste von Tupeln in Python der Form [(word, sym) , (word, sym)....]
.
Nehmen wir an, das Symbol ist entweder A
oder B
. Ich möchte alle Wörter zurückgeben, für die die Liste zwei Tupel des Formulars ("example", A)
und enthält ("example", B)
. Also im Grunde ein Wort gepaart mit BEIDEN A
und B
. Ich gehe davon aus, dass dies mithilfe des Listenverständnisses möglich ist. Ich kann dies tun, um alle Wörter zu erhalten, bei denen das Symbol A ist:
[x[0] for x in self.list if x[1] == "A"]
und auf ähnliche Weise erhalten Sie die Liste der Wörter, bei denen das Symbol B ist. Ich bin mir jedoch nicht sicher, wie ich die beiden Listen vergleichen soll.
Würde ich einfach verwenden if word in listA and word in listB
?
Unter der Annahme, dass die Reihenfolge unwichtig ist, ist dies ein guter Anwendungsfall für set
Kreuzungen:
setA = {word for word, sym in self.list if sym == "A"}
setB = {word for word, sym in self.list if sym == "B"}
AB_words = setA & setB # Preserves only those words found in both input sets
Wenn Sie dann testen müssen, ob ein bestimmtes Wort ein allgemeines Wort ist, handelt es sich um einen trivialen set
Mitgliedschaftstest:
if word in AB_words:
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen