Ich habe diese einzigartige Anforderung, die durch diesen Code erklärt werden kann. Dies ist Arbeitscode, aber nicht speichereffizient.
data = [[
"A 5408599",
"B 8126880",
"A 2003529",
],
[
"C 9925336",
"C 3705674",
"A 823678571",
"C 3205170186",
],
[
"C 9772980",
"B 8960327",
"C 4185139021",
"D 1226285245",
"C 2523866271",
"D 2940954504",
"D 5083193",
]]
temp_dict = {
item: index for index, sublist in enumerate(data)
for item in sublist
}
print(data[temp_dict["A 2003529"]])
out: ['A 5408599', 'B 8126880', 'A 2003529']
Kurz gesagt, ich möchte, dass jedes Element der Unterliste indexierbar ist und die Unterliste zurückgibt.
Die obige Methode funktioniert, benötigt jedoch viel Speicher, wenn die Datenmenge groß ist. Gibt es einen besseren, speicher- und CPU-freundlichen Weg? Die Daten werden als JSON-Datei gespeichert.
Bearbeiten Ich habe die Antworten für das größtmögliche Anwendungsfall-Szenario ausprobiert (1000 Unterlisten, 100 Elemente in jeder Unterliste, 1 Million Abfragen). Hier sind die Ergebnisse (Mittelwert aus 10 Durchläufen):
Method, Time (seconds), Extra Memory used
my, 0.637 40 Mb
deceze, 0.63 40 Mb
James, 0.78 200 kb
Pant, > 300 0 kb
mcsoini, forever 0 kb
{item: sublist for sublist in data for item in sublist}könnte etwas effizienter und direkter sein ...?!