如何在Scala中按键对字典进行排序?

时间:2015-08-19 17:04:37

标签: scala sorting hashmap

通过Python(this question for example)中的键或值对Map进行排序很容易。

我想在Scala中做同样的事情,假设我有一个字典:

val A= Map(0 -> 1.0, 3 -> 5.0,2->7.0)

我想通过键获得与排序的Map对应的元组列表:

val A_sorted= List((0,1.0),(2,7.0),(3,5.0))

谢谢!

3 个答案:

答案 0 :(得分:6)

Map(0 -> 1.0, 3 -> 5.0,2->7.0).toList.sortBy(_._1)

res1: List[(Int, Double)] = List((0,1.0), (2,7.0), (3,5.0))

答案 1 :(得分:6)

足够

Arguable

在排序邮件时,首先排序第一个坐标;在平等时使用第二个坐标。

要注意,在Scala标签中,按字母大小写的大写字母表示类型(或类)。

答案 2 :(得分:2)

一种方法是使用:_ *语法输出Sequence的内容然后输出 将地图转换为sortedMap:

val a = Map(0 -> 1.0, 3 -> 5.0,2->7.0)

val sortedA = scala.collection.immutable.SortedMap(a.toList:_*)

如果需要,您可以将其转换为列表:

sortedA.toList