我有一个map[str, int]
,并且需要在地图上找到最大值int
值。 是否可以将地图的所有值作为列表获取,然后执行max(list)
? 或类似的东西..如何在Rascal中查找地图的最大值?
0
A
回答
0
你可以通过几种不同的方式获取值。作为参考,假设我们有以下地图:
rascal>map[str words, int counts] m = ("word1" : 3, "word2" : 10, "word3" : 4, "word4" : 10);
map[str words, int counts]: ("word1":3,"word2":10,"word3":4,"word4":10)
您可以将其视为保留字以及它们在文档中出现的频率。现在有几种方法可以找回值。由于我们在声明m
(分别为words
和counts
)类型时给出域名和范围两个名称,因此我们可以使用这些名称来获取值。例如:
rascal>m.words;
set[str]: {"word1","word2","word3","word4"}
回来的钥匙,而:
rascal>m.counts;
set[int]: {10,3,4}
回来的值。您还可以使用“投影”符号,伸出的键或值,就像这样:
rascal>m<0>;
set[str]: {"word1","word2","word3","word4"}
rascal>m<1>;
set[int]: {10,3,4}
这个工程即使我们没有名字添加到该类型的域和范围。第三种选择,这也适用,即使我们不加名字,是可以使用的库函数从Map
库:
rascal>import Map;
ok
rascal>domain(m);
set[str]: {"word1","word2","word3","word4"}
rascal>range(m);
set[int]: {10,3,4}
现在我们有一组值,可以使用max
功能在Set
库中查找最大数:
rascal>import Set;
ok
rascal>max(m.counts);
int: 10
你现在有不同的选择,如果你真正想要的是一个或多个键与此值。 Map
库包含一个称为invert
的函数,该函数将“翻转”键和值。既然你可以有多个具有相同值的键,这实际上给你一个从该值到具有该值的所有键的映射。在我们的例子中,这看起来是这样的:
rascal>invert(m);
map[int, set[str]]: (
10:{"word2","word4"},
3:{"word1"},
4:{"word3"}
)
所以,如果我们想找回那种具有最大数值的话,我们可以做到以下几点:
rascal>invert(m)[max(m.counts)];
set[str]: {"word2","word4"}
相关问题
- 1. 查找本地最大值
- 2. 如何在IntList中查找最大值?
- 3. 在Java地图中与最大值关联的查找键
- 4. 在地图中查找最小值
- 5. 在地块上查找最大y值
- 6. 查找地图中最高的n值
- 7. C++帮助查找地图中的最大值
- 8. 如何查找列表框中的最大值和最小值
- 9. 如何使用vba在excel中查找组值的最大值?
- 10. 在VBA中查找列的最大值
- 11. 在数据结构中查找最大值最大值和最大键值
- 12. 如何使用MySQL查找最大值
- 13. 在bigquery中查找多个值的最小值和最大值
- 14. 在CUDA中查找最大值
- 15. 在python中查找最大值
- 16. Python:在csv中查找最大新值
- 17. 在Doctrine中查找Groupwise最大值
- 18. 在Java中查找num值和最小值/最大值值
- 19. 查找最大,最小和中间值
- 20. 如何在谷歌地图上查找经纬度的最小值和最大值
- 21. 如何在python中查找两个数字的最大值?
- 22. 如何在Java 8中使用流的Integer查找最大值?
- 23. 如何在excel中查找值的最大出现次数?
- 24. 如何在嘈杂的图像中找到许多本地最大值?
- 25. 如何在Scala中查找笛卡尔坐标的最小值和最大值
- 26. 在向量中查找当地最大值
- 27. 在clojure中查找一棵树的最大值和最小值
- 28. 如何在MATLAB的图像中找到局部最大值?
- 29. 查找最大值/最小值
- 30. 查找局部最小值/最大值