Go-map排序操作

Go-map对value排序操作

网上一些的代码,真的令人难受,不知道自己测试一下吗。这是我改进的代码,“golang语言中文网”,也存在错误,不废话直接上代码

/根据value排序
type Pair struct {
	Key string
	Value int
}

type PairList []Pair

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

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

测试:这块直接传入参数就行了!

[{N7 0} {N9 0} {N4 1} {N0 1} {N6 5} {N8 6} {N2 7} {N1 7} {N5 8} {N3 9}]
map[N0:1 N1:7 N2:7 N3:9 N4:1 N5:8 N6:5 N7:0 N8:6 N9:0]

上面一行就是得到的结果,接下来就简单,自己搞定吧!!。下面一行是原始的map。

😭需要注意的问题是,如果你将struct转成map,有是乱序的,原因是出入的位置是随机的没有固定的顺序。

https://thoughts.teambition.com/share/5fc4c9775bbd370042aec1fc#title=golang-map-value_排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shanshan yuan

一个关注于技术与生活的学生

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值