2 Stimmen

Python: Suche nach dem Index des Elements, das X in der Liste enthält

Ich habe eine riesige Liste von Daten, mehr als 1 Mio. Datensätze in einem Formular, das diesem ähnelt (obwohl es ein viel einfacheres Formular ist):

[
  {'name': 'Colby Karnopp', 'ids': [441, 231, 822]}, 
  {'name': 'Wilmer Lummus', 'ids': [438, 548, 469]},
  {'name': 'Hope Teschner', 'ids': [735, 747, 488]}, 
  {'name': 'Adolfo Fenrich', 'ids': [515, 213, 120]} 
  ... 
]

Bei einer ID von 735 möchte ich den Index 2 für Hope Teschner finden, da die angegebene ID in die Liste der IDs für Hope fällt. Wie lässt sich dies am besten bewerkstelligen (in Bezug auf die Leistung)?

Danke für alle Tipps.

EDIT

Wahrscheinlich hätte ich das erwähnen sollen, aber eine id könnte mehr als einmal auftauchen. Für den Fall, dass eine bestimmte id tut mehr als einmal auftauchen, möchte ich den niedrigsten Index für die angegebene ID.

Die Daten in der Liste werden sich häufig ändern, so dass ich zögere, über den Aufbau eines Wörterbuchs zu gehen, da das Wörterbuch bei jeder Aktualisierung der Liste geändert / neu erstellt werden müsste, da die Indizes die Werte im Diktat sind - d.h. die Änderung der Position eines Elements in der Liste würde erfordern, dass jeder Wert im Wörterbuch aktualisiert wird, dessen Index größer ist als der neu geänderte Index.

BEARBEITEN BEARBEITEN

Ich habe gerade ein paar Benchmarks durchgeführt, und es scheint, dass der Wiederaufbau des Wörterbuchs auch bei mehr als 1 Mio. Datensätzen recht schnell geht. Ich denke, ich werde diese Lösung für jetzt verfolgen.

0voto

Es scheint, dass die Datenstruktur für ihre Verwendung schlecht geeignet ist. Das Ändern der Liste ist kostspielig - sowohl die Änderung selbst (wenn Sie irgendwelche Einfügungen/Löschungen vornehmen) als auch die daraus resultierende Notwendigkeit, ein Diktat neu zu erstellen oder jedes Mal lineare Scans durchzuführen.

Die Frage ist: wie Ändert sich Ihre Liste?

Vielleicht können Sie anstelle von Indizes (die sich häufig ändern) Objekte verwenden und Zeiger auf die Objekte selbst verwenden, anstatt sich um Indizes zu kümmern?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X