আমার এই অনন্য প্রয়োজনীয়তা রয়েছে যা এই কোড দ্বারা ব্যাখ্যা করা যেতে পারে। এটি কোড কাজ করছে তবে মেমরির দক্ষ নয়।
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}কিছুটা দক্ষ এবং সরাসরি হতে পারে… ?!