이 코드로 설명 할 수있는이 독특한 요구 사항이 있습니다. 이것은 작동하는 코드이지만 메모리 효율적이지 않습니다.
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']
요컨대, 하위 목록의 각 항목을 색인 가능하게 만들고 하위 목록을 반환해야합니다.
위의 방법은 작동하지만 데이터가 클 때 많은 메모리가 필요합니다. 더 나은 메모리와 CPU 친화적 인 방법이 있습니까? 데이터는 JSON 파일로 저장됩니다.
편집 가장 큰 사용 사례 시나리오 (1000 하위 목록, 각 하위 목록의 100 개 항목, 백만 개의 쿼리)에 대한 답변을 시도했으며 결과는 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}좀 더 효율적이고 직접적 일 수 있습니다… ?!