When a programming language does not support "nimble" tables or the implementation is too slow, there are various ways to emulate them. Here are some suggestions.
A map nested in a map is probably conceptually the simplest, but in practice can get a bit tricky in some languages. A variation is a map of "records", where "record" may be a C-like "struc" or an object.
List plus Maps
A list can be used to store the primary key for iteration purposes and associative arrays (maps) can be used to store individual cell values. Example three-column table:
keyList = "aaa,bbb,ccc,etc"; columnA = newMap(); columnB = newMap(); columnC = newMap(); // [fill up from table source, not shown] for (i = listEach(keyList,",")) { printLn(columnA[i]); printLn(columnB[i]); printLn(columnC[i]); }
Row-Column Hash
Row ID and column name can be concatenated together using a reserved character such as a comma or a pipe.
table = newMap(); // [fill up from table source, not shown] for (i = listEach(keyList,",")) { // see above example for key-list source printLn(table[i . "|" . "columnA"]); printLn(table[i . "|" . "columnB"]); printLn(table[i . "|" . "columnC"]); }This approach may be the most flexible in that one does not have to hard-code columns up-front. Thus, it can serve as part of a generic MinimalTable framework in a scriptish language. Accessor routines/methods can be created to simplify references and give alternative delimiter choices.