scala map从map中获取键作为序列,按键和值排序



在Python中我可以这样做:

in_dd = {"aaa": 1, "bbb": 7, "zzz": 3, "hhh": 9, "ggg": 10, "ccc": 3}
out_ll = ['ggg', 'hhh', 'bbb', 'aaa', 'ccc', 'zzz']

所以,我想让键按值降序排序同时让键按升序排序考虑到排序值

如何在Scala中实现?

在Scala中,我知道我可以这样做:
val m = Map("aaa" -> 3, "bbb" -> 7, "zzz" -> 3, "hhh" -> 9, "ggg" -> 10, "ccc" -> 3)
m.toSeq.sortWith(_._2 > _._2)

但是我不知道如何按两种情况排序。

编辑:

我也尝试过这样的方法,但它没有返回期望的结果:

m.toSeq.sortWith((x,y) => x._2 > y._2 && x._1 < y._1).map(_.1)
List((ggg,10), (hhh,9), (bbb,7), (ccc,3), (zzz,3), (aaa,3))

注意应为aaa,ccc,zzz

在scala中可以使用:

m.toSeq.sortBy(a => (a._2, a._1) )(Ordering.Tuple2(Ordering.Int.reverse, Ordering.String.reverse))

对于List((ggg,10), (hhh,9), (bbb,7), (zzz,3), (ccc,3), (aaa,3))

m.toSeq.sortBy(a => (-a._2, a._1) )

forList((ggg,10), (hhh,9), (bbb,7), (aaa,3), (ccc,3), (zzz,3))

相关内容

  • 没有找到相关文章

最新更新