मेरी यह अद्वितीय आवश्यकता है जिसे इस कोड द्वारा समझाया जा सकता है। यह काम कर रहा कोड है, लेकिन मेमोरी कुशल नहीं है।
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']
संक्षेप में, मैं चाहता हूं कि उप-सूची के प्रत्येक आइटम को अनुक्रमित किया जाए और सबलिस्ट को वापस कर दिया जाए।
उपरोक्त विधि काम करती है लेकिन डेटा बड़ी होने पर बहुत अधिक मेमोरी लगती है। क्या कोई बेहतर, मेमोरी और सीपीयू अनुकूल तरीका है? डेटा को JSON फ़ाइल के रूप में संग्रहीत किया जाता है।
संपादित करें मैंने सबसे बड़े संभावित उपयोग के मामले के जवाबों की कोशिश की (1000 सबलिस्ट, प्रत्येक सबलिस्ट में 100 आइटम, 1 मिलियन प्रश्न) और यहां परिणाम (10 रन का मतलब) हैं:
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}थोड़ा और अधिक कुशल और प्रत्यक्ष हो सकता है… ?!