Tupelwert nach Schlüssel
Ist es möglich, den Wert aus dem Tupel:
TUPLE = (
('P', 'Shtg1'),
('R', u'Shtg2'),
('D', 'Shtg3'),
)
durch aufrufen STR Schlüssel wie P
Python sagt, dass nur int verwendet werden kann für diese Art von 'query'
Kann ich nicht verwenden Schleife (zu viel Aufwand...)
Danke!
Kommentar zu dem Problem - Öffnen
Es gibt keinen anderen Weg als Schleife nacheinander, bis Sie den Schlüssel finden, mit einer Daten-Struktur wie dieser. Wenn Sie das nicht wollen, dann müssen Sie ein mapping (in Python es verwendet eine hash-Tabelle für Konstante Zeit-lookup). Sie können ganz einfach deaktivieren Sie diese in ein
dict
, indem Sie sagen: dict(TUPEL)
. namedtuple
können verwendet werden. Finden Sie Eduardo ' s Antwort und meine Ausarbeitung. InformationsquelleAutor der Frage Mission | 2012-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die kanonische Datenstruktur für diese Art von Abfragen ist ein Wörterbuch:
Wenn Sie ein Tupel, es gibt keinen Weg, um Schleifen zu vermeiden (entweder explizit oder implizit).
InformationsquelleAutor der Antwort NPE
Du willst ein Wörterbuch statt.
Dann können Sie den Zugriff auf den Schlüssel so:
InformationsquelleAutor der Antwort Makoto
Anstatt sich zu voller Wörterbücher können Sie versuchen, mit einem benannte Tupel statt. Weitere Informationen in diese Frage.
Grundsätzlich definieren Sie tags für die Felder und sind dann in der Lage, beziehen sich auf Sie als Wert.tag1 usw.
Unter Angabe der docs:
InformationsquelleAutor der Antwort Eduardo Ivanec
dict(TUPLE)[key]
wird tun, was Sie wollen.Es ist ein wenig Speicher-overhead, aber es ist schnell.
InformationsquelleAutor der Antwort Koed00
Zu erarbeiten, Eduardo Antwort mit dem code aus dem python-shell.
Denken Sie daran, dass Tupel sind unveränderlich, und dictionaries sind veränderlich. Wenn Sie möchten, unveränderliche Typen, namedtuple könnte der Weg zu gehen.
InformationsquelleAutor der Antwort cod3monk3y