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

How can I sort a dictionary by key in Scala?

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

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

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

我想得到一个元组列表,对应于按键排序的映射:

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

谢谢!

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))

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

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

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

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

sortedA.toList  

足以

A.toList.sorted

双元排序时,第一个坐标先排序;在平等的情况下,使用第二个坐标。

请注意,在 Scala 标签中,首字母大写的约定表示类型(或 类)。