Tôi có yêu cầu duy nhất này có thể được giải thích bằng mã này. Đây là mã làm việc nhưng không hiệu quả bộ nhớ.
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']
Nói tóm lại, tôi muốn mỗi mục của danh sách phụ có thể được lập chỉ mục và nên trả về danh sách phụ.
Phương pháp trên hoạt động nhưng mất nhiều bộ nhớ khi dữ liệu lớn. Có cách nào tốt hơn, bộ nhớ và CPU thân thiện không? Dữ liệu được lưu trữ dưới dạng tệp JSON.
Chỉnh sửa Tôi đã thử các câu trả lời cho kịch bản ca sử dụng lớn nhất có thể (1000 danh sách phụ, 100 mục trong mỗi danh sách phụ, 1 triệu truy vấn) và đây là kết quả (trung bình của 10 lần chạy):
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}có thể hiệu quả hơn một chút và trực tiếp?!