Index einer Liste in einer Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
niederrheiner
User
Beiträge: 30
Registriert: Montag 7. Januar 2013, 11:52

Hallo an Alle,
ich habe eine Liste mit folgendem Aufbau

Code: Alles auswählen

zeile.append((zeit,lat,lon))
Ich möchte nun über die zeit den Index eines bestimmten Listenlements(Liste) herausfinden.
Mit

Code: Alles auswählen

idx = zeile.index(zeit)
klappt das aber nicht.

Wie mach ich es richtig?

Danke für Eure Hilfe und Tipps.

Bis dann ...
MfG
Günter
nezzcarth
User
Beiträge: 1778
Registriert: Samstag 16. April 2011, 12:47

Na ja, du hast hier ja eine verschachtelte Datenstruktur, also ein Tupel in einer Liste. Wenn du die Index-Methode der Liste aufrufst, bezieht sich die Methode auf die Listenelemente, also die Tupeln und nicht deren Inhalt. Entsprechend würde Index nur etwas zurück liefern, wenn du nach konkreten Tupeln als Ganzes suchen würdest.

Was hast du denn genau vor? Vielleicht gibt es eine Datenstruktur, die sich für deinen Zweck besser eignet.
niederrheiner
User
Beiträge: 30
Registriert: Montag 7. Januar 2013, 11:52

nezzcarth hat geschrieben:Was hast du denn genau vor? Vielleicht gibt es eine Datenstruktur, die sich für deinen Zweck besser eignet.
ich möchte mit einem Zeitstempel (Aufnahmezeitpunkt eines Fotos) in einer Liste von Koordinaten (zeitstempel, lat, lon) über den Zeitstempel an die entsprechenden Koordinaten kommen. Die Koordinaten sind als Tupel (zeit, lat, lon) in einer Liste gespeichert.
Also mit zeitfoto möchte ich über zeitkoord auf die entsprechenden Werte zugreifen.
BlackJack

@niederrheiner: Das klingt eher als wolltest Du eigentlich ein Wörterbuch verwenden das Zeit auf Position abbildet.
nezzcarth
User
Beiträge: 1778
Registriert: Samstag 16. April 2011, 12:47

Ähnlich wie BlackJack würde ich auch ein Dictionary vorschlagen, wenn du stets zu gegebenen Zeitstempeln die passenden Koordinaten bekommen möchtest. Wenn die Daten so vorliegen, wie du beschrieben hast, kannst du sie beispielsweise mit einer Dictionary-Comprehension in eine passende Form bringen:

Code: Alles auswählen

In [1]: coordinates
Out[1]: 
[(147181000, -25.066667, -130.1),
 (1471811000, 78.222222, 15.631667),
 (1471812000, -72.011389, 2.535)]

In [2]: {timestamp: (latitude, longitude) for timestamp, latitude, longitude in coordinates}
Out[2]: 
{147181000: (-25.066667, -130.1),
 147181100: (78.222222, 15.631667),
 147181200: (-72.011389, 2.535)}

Antworten