Ben bu kod ile açıklanabilir bu benzersiz gereksinimi var. Bu çalışma kodu ama bellek verimli değil.
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']
Kısacası, her bir alt liste öğesinin dizine eklenebilir olmasını istiyorum ve alt listeyi döndürmelidir.
Yukarıdaki yöntem işe yarıyor ancak veri büyük olduğunda çok fazla bellek gerekiyor. Daha iyi, bellek ve CPU dostu bir yol var mı? Veriler JSON dosyası olarak saklanır.
Düzenle Mümkün olan en büyük kullanım senaryosu (1000 alt liste, her alt listede 100 öğe, 1 milyon sorgu) için yanıtları denedim ve sonuçlar (ortalama 10 çalıştırma):
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}biraz daha verimli ve doğrudan olabilir… ?!