Maybe something similar has already been done, if someone remembers something like this...
how to get a nested indexed list from a flat list.
In_List > length 1000
Out_List > 3 level each level is length 10
the contents of each line can be anything:
"SubFoo " "Cl Foo" "Foo " "Description A" "Foo B" "F Measure mmm"
In_List '(
("SubGroup 0" "Class 00" "SubClass 000" "000 DescriptionA" "000 DescriptionB" "000 Measure")
("SubGroup 0" "Class 00" "SubClass 001" "001 DescriptionA" "001 DescriptionB" "001 Measure")
("SubGroup 0" "Class 00" "SubClass 002" "002 DescriptionA" "002 DescriptionB" "002 Measure")
...
("SubGroup 0" "Class 01" "SubClass 010" "010 DescriptionA" "010 DescriptionB" "010 Measure")
("SubGroup 0" "Class 01" "SubClass 011" "011 DescriptionA" "011 DescriptionB" "011 Measure")
("SubGroup 0" "Class 01" "SubClass 012" "012 DescriptionA" "012 DescriptionB" "012 Measure")
...
("SubGroup 0" "Class 02" "SubClass 020" "020 DescriptionA" "020 DescriptionB" "020 Measure")
("SubGroup 0" "Class 02" "SubClass 021" "021 DescriptionA" "021 DescriptionB" "021 Measure")
("SubGroup 0" "Class 02" "SubClass 022" "022 DescriptionA" "022 DescriptionB" "022 Measure")
...
("SubGroup 1" "Class 10" "SubClass 100" "100 DescriptionA" "100 DescriptionB" "100 Measure")
("SubGroup 1" "Class 10" "SubClass 101" "101 DescriptionA" "101 DescriptionB" "101 Measure")
("SubGroup 1" "Class 10" "SubClass 102" "102 DescriptionA" "102 DescriptionB" "102 Measure")
...
("SubGroup 1" "Class 11" "SubClass 110" "110 DescriptionA" "110 DescriptionB" "110 Measure")
("SubGroup 1" "Class 11" "SubClass 111" "111 DescriptionA" "111 DescriptionB" "111 Measure")
("SubGroup 1" "Class 11" "SubClass 112" "112 DescriptionA" "112 DescriptionB" "112 Measure")
...
("SubGroup 1" "Class 12" "SubClass 120" "120 DescriptionA" "120 DescriptionB" "120 Measure")
("SubGroup 1" "Class 12" "SubClass 121" "121 DescriptionA" "121 DescriptionB" "121 Measure")
("SubGroup 1" "Class 12" "SubClass 122" "122 DescriptionA" "122 DescriptionB" "122 Measure")
... last item is:
("SubGroup 9" "Class 99" "SubClass 999" "999 DescriptionA" "999 DescriptionB" "999 Measure")
)
Out_List '(
(0 "SubGroup 0"
(0 "Class 00"
(0 "SubClass 000" "000 DescriptionA" "000 DescriptionB" "000 Measure")
(1 "SubClass 001" "001 DescriptionA" "001 DescriptionB" "001 Measure")
(2 "SubClass 002" "002 DescriptionA" "002 DescriptionB" "002 Measure")
...
)
(1 "Class 01"
(0 "SubClass 010" "010 DescriptionA" "010 DescriptionB" "010 Measure")
(1 "SubClass 011" "011 DescriptionA" "011 DescriptionB" "011 Measure")
(2 "SubClass 012" "012 DescriptionA" "012 DescriptionB" "012 Measure")
...
)
(2 "Class 02"
(0 "SubClass 020" "020 DescriptionA" "020 DescriptionB" "020 Measure")
(1 "SubClass 021" "021 DescriptionA" "021 DescriptionB" "021 Measure")
(2 "SubClass 022" "022 DescriptionA" "022 DescriptionB" "022 Measure")
)
...
)(1 "SubGroup 1"
(0 "Class 10"
(0 "SubClass 100" "100 DescriptionA" "100 DescriptionB" "100 Measure")
(1 "SubClass 101" "101 DescriptionA" "101 DescriptionB" "101 Measure")
(2 "SubClass 102" "102 DescriptionA" "102 DescriptionB" "102 Measure")
...
)
(1 "Class 11"
(0 "SubClass 110" "110 DescriptionA" "110 DescriptionB" "110 Measure")
(1 "SubClass 111" "111 DescriptionA" "111 DescriptionB" "111 Measure")
(2 "SubClass 112" "112 DescriptionA" "112 DescriptionB" "112 Measure")
...
)
(2 "Class 12"
(0 "SubClass 120" "120 DescriptionA" "120 DescriptionB" "120 Measure")
(1 "SubClass 121" "121 DescriptionA" "121 DescriptionB" "121 Measure")
(2 "SubClass 122" "122 DescriptionA" "122 DescriptionB" "122 Measure")
...
)
...
)
... last item is:
(9 "SubGroup 9"
(0 "Class 90"
(0 "SubClass 900" "900 DescriptionA" "900 DescriptionB" "900 Measure")
(1 "SubClass 901" "901 DescriptionA" "901 DescriptionB" "901 Measure")
(2 "SubClass 902" "902 DescriptionA" "902 DescriptionB" "902 Measure")
...
)
...
(9 "Class 99"
... last item is:
(9 "SubClass 999" "999 DescriptionA" "999 DescriptionB" "999 Measure")
)
)
)
The goal is:
(defun Dxf (DxfCod EntDat) (cdr (assoc DxfCod EntDat)))
To find the DescriptionB of SubClass 999:
(caddr (DXF 9 (cdr (DXF 9 (cdr (DXF 9 Out_List))))))) => "999 DescriptionB"
(setq Pfx_SG 7 Pfx_CL 8 Pfx_SC 4)
To find the Description of SubGroup:
(DXF Pfx_SG Out_List) => "SubGroup 7"
To find the Description of Class:
(car (DXF Pfx_CL (cdr (DXF Pfx_SG Out_List)))) => "Class 78"
To find the Description of SubClass:
(car (DXF Pfx_SC (cdr (DXF Pfx_CL (cdr (DXF Pfx_SG Out_List)))))) => "SubClass 784"