Saya memiliki persyaratan unik yang dapat dijelaskan oleh kode ini. Ini adalah kode yang berfungsi tetapi tidak efisien memori.
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']
Singkatnya, saya ingin setiap item dari sub-daftar dapat diindeks dan harus mengembalikan sublist.
Metode di atas berfungsi tetapi dibutuhkan banyak memori saat data berukuran besar. Apakah ada cara yang lebih baik, ramah memori dan CPU? Data disimpan sebagai file JSON.
Sunting Saya mencoba jawaban untuk skenario penggunaan terbesar (1000 sublist, 100 item di setiap sublist, 1 juta kueri) dan berikut ini hasilnya (rata-rata 10 run):
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}mungkin sedikit lebih efisien dan langsung ... ?!