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.