값에 따라 맵을 정렬하는 방법
이 질문은 키-값을 정렬하는 것이 목표인 맵을 다룰 때 발생합니다. 값을 기준으로 내림차순으로 쌍을 이룹니다. 예를 들어, 다음과 같은 맵이 있다고 가정합니다.
map[string]int{ "hello": 10, "foo": 20, "bar": 20, }
다음과 같이 정렬된 쌍을 인쇄할 수 있습니다.
foo, 20 bar, 20 hello, 10
솔루션
이 문제에 대한 해결책은 필요한 len, less 및 swap 함수를 제공하여 정렬 인터페이스를 구현하는 것입니다. 구현 예는 다음과 같습니다.
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] }
이 함수를 사용하려면 맵을 RankByWordCount에 인수로 전달하세요. 그러면 정렬된 키-값 쌍 목록이 반환됩니다. 그런 다음 목록을 반복하여 정렬된 결과를 인쇄할 수 있습니다.
위 내용은 내림차순으로 값을 기준으로 지도를 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!