tablereverse
reverse table
Calling Sequence
Parameters
Options
Summary
Description
Examples
Compatibility
tablereverse(t, c, opts)
t
-
table
c
(optional) combiner function
opts
zero or or more options as specified below
distinctentries = truefalse
Specifies that the entries in the input table t are known to be distinct, i.e. numelems(t)=numelems([entries(t)]). This enables more efficient construction of the output table. The default is false.
nolist = truefalse
Specifying 'nolist' or 'nolist'=true causes each entry in the output table s to be a simple collection of indices of t, without wrapping each index in a list. This is useful for tables where every index is a single object. When 'nolist' is used on a table with expression sequence indices or entries, the pairings may be difficult to deduce in the result.
sort = truefalse
Specifying 'sort' or 'sort'=true indicates that each entry of the output table s should be sorted. This is only useful when a non-default combiner function c has been specified which produces ordered containers (for example a list or Array). The default value is false, which means that if the container type is ordered, the order chosen is not specified.
Returns a table which is the result of reversing the table t while combining keys mapping to the same value with combiner function f.
The tablereverse function takes a table t and returns a table s which is a reversal of t, in the sense that the indices of s are the entries of t and the entries of s are a collection of the indices of t.
By default, an entry s[u] in the output table s consists of a set of lists. Each element v in s[u] is a list whose contents correspond to an entry of the input table t pointing at u, so the property t[op(v)]=u holds.
The optional argument c allows the specification of a combiner function c which accepts an expression sequence of inputs representing keys in t which map to the same value and returns some customized value.
The default combiner function is simply the set constructor `{}` which collects all its arguments together in a set.
Here we reverse a table mapping various foods to food categories.
T≔table⁡apple=fruit,orange=fruit,zucchini=vegetable,milk=dairy
T≔table⁡orange=fruit,milk=dairy,apple=fruit,zucchini=vegetable
tablereverse⁡T
table⁡vegetable=zucchini,fruit=apple,orange,dairy=milk
Notice that in the above output all the foods in the entries of the output table appear in lists. This is to preserve the keys of the original table T in case any of its keys were expression sequences. Because this is not the case in our example, we can use nolist to simplify the output.
tablereverse⁡T,nolist
Instead of the default combiner function, use a list constructor and sort the resulting entries.
tablereverse⁡T,`[]`,nolist,sort
This table shows what ABO blood type a person has given their genetic profile.
BloodPhenotypes≔table⁡symmetric,`$`⁡A,2=A,`$`⁡B,2=B,`$`⁡O,2=O,A,B=AB,A,O=A,B,O=B
BloodPhenotypes≔table⁡symmetric,A,B=AB,B,B=B,O,O=O,B,O=B,A,O=A,A,A=A
BloodGenotypes≔tablereverse⁡BloodPhenotypes
BloodGenotypes≔table⁡B=B,B,B,O,O,B,AB=A,B,B,A,A=A,A,A,O,O,A,O=O,O
We can see by this result that there are multiple genetic combinations that result in type A, but only one which results in type O.
BloodGenotypesA
A,A,A,O,O,A
BloodGenotypesO
O,O
This table maps countries to their capital cities. Because the entries here are distinct, that is, no city appears as the capital of two countries, we can use the distinctentries option when calling tablereverse.
Capitals≔table⁡Croatia=Zagreb,Jordan=Amman,Mali=Bamako,Uruguay=Montevideo,Cambodia=Phnom Penh,Cape Verde=Praia,Sierra Leone=Freetown
Capitals≔table⁡Mali=Bamako,Sierra Leone=Freetown,Jordan=Amman,Croatia=Zagreb,Cambodia=Phnom Penh,Uruguay=Montevideo,Cape Verde=Praia
tablereverse⁡Capitals,distinctentries,nolist
table⁡Freetown=Sierra Leone,Bamako=Mali,Montevideo=Uruguay,Amman=Jordan,Zagreb=Croatia,Phnom Penh=Cambodia,Praia=Cape Verde
The fact that entries are distinct in the original table means that with the default combiner function, every entry in the output will be a singleton set. We can avoid this using the identity function as combiner.
tablereverse⁡Capitals,t↦t,distinctentries,nolist
The tablereverse command was introduced in Maple 2019.
For more information on Maple 2019 changes, see Updates in Maple 2019.
The tablereverse command was updated in Maple 2022.
The nolist option was introduced in Maple 2022.
For more information on Maple 2022 changes, see Updates in Maple 2022.
See Also
entries
indices
tablemerge
Download Help Document