当前位置: 首页 > 面试题库 >

如何通过Map [string] int的值对其排序?

顾骏祥
2023-03-14
问题内容

给定此代码块

map[string]int {"hello":10, "foo":20, "bar":20}

我想打印出来

foo, 20
bar, 20
hello, 10

从高到低的顺序

谢谢!


问题答案:

在Andrew Gerrand的Golang-nuts上找到了答案

您可以通过编写len / less / swap函数来实现sort接口

func rankByWordCount(wordFrequencies map[string]int) PairList{
  pl := make(PairList, len(wordFrequencies))
  i := 0
  for k, v := range wordFrequencies {
    pl[i] = Pair{k, v}
    i++
  }
  sort.Sort(sort.Reverse(pl))
  return pl
}

type Pair struct {
  Key string
  Value int
}

type PairList []Pair

func (p PairList) Len() int { return len(p) }
func (p PairList) Less(i, j int) bool { return p[i].Value < p[j].Value }
func (p PairList) Swap(i, j int){ p[i], p[j] = p[j], p[i] }

对于原始帖子,请在这里https://groups.google.com/forum/#!topic/golang-
nuts/FT7cjmcL7gw
找到



 类似资料:
  • 我试图通过映射[objectid: String,Int]过滤包含对象的Seq[Object],其中Object.id是映射中的一个键。 我想返回一个新的Map,其中只包含id在原始映射中的对象及其Int值。因此函数应该返回Map[Object,Int] 这是我到目前为止的情况?实现这一目标的最佳方法是什么?

  • 我自己似乎无法解决这个问题。我有一个二维阵列, 字符串收集器[名称][#ofstuff] 我试着用这段代码来分类: 我对Compare很陌生,试着阅读了很多关于它的文档,但并不真正理解它。排序函数是否只获取我想要比较两个字符串的信息,然后执行它的操作? 出于某种原因,此代码在每次读取时都会抛出NullPointerException。 p1处线程“AWT-event queue-0”Java .

  • 我正在做一个拼字游戏应用程序,我想做一个顶级评分系统。我开始制作一个数组,在那里保存球员的名字和他们相应的分数。我想对分数数组进行排序,使它们从最高到最低排列,并输出分数(降序)以及相应的名称。请指导我如何对分数进行排序,并将其与相应的球员姓名一起输出。任何帮助都将不胜感激。谢谢! 以下是我目前掌握的信息:

  • 问题内容: 我有一个同时包含键和值的字符串的Map。 数据如下: 我想根据其键对地图进行排序。因此,最后,我将拥有..依此类推。 最终,我试图从该Map中获取两个字符串。 第一个字符串:问题(顺序为1 ..10) 第二个字符串:答案(与问题的顺序相同) 现在,我有以下内容: 这使我的问题成串出现,但顺序不正确。 问题答案: 简短答案 使用。这正是它的目的。 如果将此地图传递给你,并且你无法确定类型

  • 问题内容: 我有一个非常简单的JavaScript对象,用作关联数组。是否有一个简单的函数可以让我获取值的键,还是必须迭代该对象并手动找到它? 问题答案: 使用Underscore.js库:

  • 问题内容: 我有数组喜欢 我想按数字顺序而不是字母顺序进行排序。 如果我用 我得到 代替 问题答案: 我认为到目前为止,将s 转换为s 的最简单,最有效的方法是: 然后对整数数组进行排序。如果确实需要,您可以随时将其转换回: 一种替代方法是使用Comparator接口来精确指示元素的比较方式,但这可能等同于将每个值转换为任意值-使上述方法更加有效。