У мене є ця унікальна вимога, яку можна пояснити цим кодом. Це робочий код, але не ефективно.
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}може бути трохи ефективнішим і прямим… ?!