Ideal, wenn Sie diese Art von Abfragen häufig tun würden, sollten Sie Ihre Daten restrukturieren, um den Anwendungsfall besser zu passen. Zum Beispiel, haben Sie ein Wörterbuch, wo die Schlüssel Beträge und Daten sind Werte. Dann hätten Sie schnelle O(1)
Lookups in das Wörterbuch nach Schlüssel.
Aber in diesem Zustand des Problems, können Sie es mit zip()
und next()
lösen:
>>> d = {
... 'date': ['06/08/2016', '06/09/2016', '06/10/2016'],
... 'close': [ 923.13, 914.25, 909.42]
... }
>>> a = 914.25
>>> next(date for date, amount in zip(d['date'], d['close']) if amount == a)
'06/09/2016'
Beachten Sie, dass, wenn die Menge nicht gefunden werden würde, next()
mit einer StopIteration
Ausnahme fehlschlagen würde. Sie können es entweder behandeln, oder Sie können vorher eine Standard bieten:
>>> a = 10.00
>>> next((date for date, amount in zip(d['date'], d['close']) if amount == a), 'Not Found')
'Not Found'
Sie auf [Numpy Äquivalent list.index] (http://stackoverflow.com/questions/5098046/numpy-equivalent-of-list-index) für die Verwendung des zweiten Teils mit dem bereits auf der Suche betrachten kann bestehende Struktur. –
Danke, dass Sie eine Antwort hinzufügen möchten. Allerdings tun wir dies nicht in Fragen hier - wenn Sie etwas anderes als die akzeptierte Antwort unten hinzufügen möchten, zögern Sie nicht, eine weitere Antwort hinzuzufügen. Bitte fügen Sie den Titeln hier auch nicht [gelöst] hinzu - ich weiß, dass es an anderer Stelle beliebt ist, aber wir verwenden das Häkchen, um Fragen stattdessen als gelöst zu markieren. Vielen Dank! – halfer