dictionary - Maxima语言是否具有map/dictionary数据结构,如果有,则如何启动它以及如何访问其值和键?

标签 dictionary moodle maxima

SourceForge当前处于关闭状态,因此我无法访问Maxima的文档,并提出了此问题。我正在Moodle中建立一个问题,该问题将从这种容器类型中受益。我试过了

optionmap : {"key1" : value1, "key2" : value2};
minmaxlist : [[max(resurssiMap["key1"],resurssiMap["key2"]),true,<key of maximum value>],
[min(resurssiMap["key1"],resurssiMap["key2"]),false,<key of minimum value>]];

但这会产生错误assignment: cannot assign to key1

有没有办法解决这个问题。在上面的代码示例中,我想将最大值和最小值的键(直到执行max()min() -functions时才知道)插入它们各自的位置,我没有知道怎么做。

关于如何实现这一目标的任何想法?

最佳答案

Maxima有两种哈希表。一个是哈希表,它作为属性附加到符号上,另一个是作为值附加到符号上。 (这类似于作为属性附加的命名函数与作为值的lambda表达式之间的区别。)

从哈希表中检索值的语法为a[x],其中a是哈希表所附加的符号,而x是键。在哈希表中存储值的语法是a[x] : y,其中y是要存储的值。没有文字哈希表构造;存储多个值的唯一方法是针对不同的a[x] : yx重复执行y。当然,可以设计一种函数来遍历键和值的列表,并将其一一存储。

哈希表默认为符号属性;您可以通过设置use_fast_arrays:true将哈希表作为值启用。 (我同意,该标志的名称非常混乱。)第一次将值存储到哈希表时,会创建该哈希表。例如。

footable[mykey] : myvalue;

创建作为属性或值(取决于footable)附加到符号use_fast_arrays的哈希表。

键可以是任何Maxima表达式。可以有多个键。

这是一个小例子。
(%i2) footable[x + 1, x - 1] : "v1" $
(%i3) footable["hmm", 12345] : 1 - a*b $
(%i4) footable[[1,2,3], sin(1)] : cos(2) $
(%i5) footable;
(%o5)                       footable
(%i6) footable[[1,2,3], sin(1)];
(%o6)                        cos(2)
(%i7) footable[1,2];
(%o7)                     footable
                                  1, 2
(%i8) kill(footable) $
(%i9) use_fast_arrays : true $
(%i10) footable[x + 1, x - 1] : "v1" $
(%i11) footable["hmm", 12345] : 1 - a*b $
(%i12) footable[[1,2,3], sin(1)] : cos(2) $
(%i13) footable;
(%o13) {Lisp Array: 
#S(HASH-TABLE TEST FASTHASH-EQUAL ((((MLIST SIMP) 1 2 3) ((%SIN \
SIMP) 1)) . ((%COS SIMP) 2))
   ((hmm 12345) . ((MPLUS SIMP) 1 ((MTIMES SIMP) -1 $A $B))) (((\
(MPLUS SIMP) 1 $X) ((MPLUS SIMP) -1 $X)) . v1))}
(%i14) footable[[1,2,3], sin(1)];
(%o14)                       cos(2)
(%i15) footable[1,2];
(%o15)                        false

请注意,值哈希表为不在表中的键返回false,而属性哈希表返回下标表达式。还请注意,值哈希表的值是Lisp哈希表对象,而属性哈希表(即%o5)的值只是符号本身。

另请参见arrayinfolistarray以分别获取键或值的列表。

我无法通过显示的示例来说明您要实现的目标。也许您可以解释更多。

关于dictionary - Maxima语言是否具有map/dictionary数据结构,如果有,则如何启动它以及如何访问其值和键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50886805/

相关文章:

python - 元组解包 - ValueError

android - 获取osmdroid map 上点击位置的经纬度

Git 没有显示本地的所有分支

Maxima - 分段函数的微分

python - 在 Python 中使用字典替换子字符串

php - 按季度而非按年报告

PHP计算8小时工作日的一半

plot - 为什么 Maxima 在尝试绘制参数图时在 plot2d 上给我一个错误?

derivative - 简化最大值中的复合函数(diff)(微分链式法则)

python - 在没有循环的情况下删除 O(1) 中双嵌套字典中的键及其值?