回答

收藏

如何按值对 Map[string]int 进行排序?

技术问答 技术问答 243 人阅读 | 0 人回复 | 2023-09-12

鉴于此代码块) y6 r: W( T8 W- S+ m
    map[string]int {"hello":10,"foo":20,"bar":20}
    # P: s* c4 V* ~
我想打印出来
9 \0 q1 |; S1 A& L5 e6 I, M
    foo,20bar,20hello,10
    ! ]) W3 ]! N5 z8 Q$ c/ y8 e
按从高到低的顺序
+ w' r* a' C/ \+ @8 V                                                                $ \" C3 g4 R- d1 T! J. a$ ]' k
    解决方案:                                                               
; K# t" B7 w4 E4 X) H                                                                你可以写 len/less/swap 函数实现排序接口
: q  R0 x# E; u
    func rankByWordCount(wordFrequencies map[string]int) PairList{  pl := make(PairList,len(wordFrequencies))  i := 0  for k,v := range wordFrequencies    pl = Pair{k,v}    i    } sort.Sort(sort.Reverse(pl))  return pl}type Pair struct {  Key string  Value int}type PairList []Pairfunc (p PairList) Len() int { return len(p) }func (p PairList) Less(i,j int) bool { return p.Value < p[j].Value }func (p PairList) Swap(i,j int){ p,p[j] = p[j],p }- z( e0 B. K) O7 T  s
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则