Wählen Sie den Wert aus der Liste der Tupel aus, in denen sich die Bedingung befindet
Habe ich eine Liste von Tupeln. Jedes Tupel hat 5 Elemente (entsprechend 5 Datenbank-Spalten)
und ich würde gerne eine Abfrage machen
select attribute1 from mylist where attribute2 = something
z.B.
personAge = select age from mylist where person_id = 10
Ist es möglich, die Abfrage der Liste der Tupel, die in irgendeiner Weise?
danke
InformationsquelleAutor der Frage xralf | 2011-10-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie benannte Tupel Sie dies tun können:
Anderweitig zu nutzen Indizes:
Oder verwenden Tupel Auspacken pro Nate ' s Antwort. Beachten Sie, dass Sie nicht haben, um geben Sie einen aussagekräftigen Namen für jedes Element, die Sie entpacken. Sie tun kann
(person_id, age, _, _, _, _)
zum entpacken einer sechs-item-Tupel.InformationsquelleAutor der Antwort Steven Rumbalski
Eine Lösung wäre, eine Liste mit Verständnis, mit pattern-matching in Ihrem Tupel:
Andere Möglichkeit wäre mit
map
undfilter
:InformationsquelleAutor der Antwort Nate
Ja, Sie können verwenden Sie filter, wenn Sie wissen, an welcher position im Tupel die gewünschte Spalte befindet. Wenn der Fall ist, dass die id wird das erste element des Tupels dann Sie können die Liste filtern, etwa so:
Diese erhalten dann die Liste der zugehörigen Tupel. Wenn Sie möchten, dass das Alter, nur wählen Sie das element, das Sie möchten. Anstelle von filtern Sie können auch list comprehension und wählen Sie das element in der ersten gehen. Man könnte sogar packen Sie es sofort (wenn es nur ein Ergebnis):
Aber ich würde empfehlen die Verwendung Wörterbücher oder benannte Tupel für diesen Zweck.
InformationsquelleAutor der Antwort rplnt