第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何按值對地圖進行排序,如果值等于則在Go中按鍵排序?

如何按值對地圖進行排序,如果值等于則在Go中按鍵排序?

Go
茅侃侃 2022-10-17 15:46:52
我遇到了一種情況,我想先按值對地圖進行排序,如果值相等,然后在 GO 中按鍵排序。這是輸入和預期輸出的示例。import "fmt"func main() {     wordFrequency := map[string]int{"banana": 3, "america": 2, "abb": 2, "test": 2, "car": 1}     fmt.Printf("%v", wordFrequency)}預期輸出:{“香蕉”:3,“abb”:2,“美國”:2,“測試”:2,“汽車”:1}這里的banana是第一個,因為它的值是3。abb和america的值都是2,但是abb排在第一位,按升序排列。所以我的問題是如何實現(xiàn)這種行為,我們首先按值對映射中的條目進行排序,如果值等于我們按鍵對它們進行排序。我檢查了相關文檔和以前的問題,但沒有一個直接解決這種情況。如果由于 Go 中的 map 數(shù)據(jù)結(jié)構(gòu)而無法做到這一點,我們?nèi)绾问褂闷渌Y(jié)構(gòu)有效地做到這一點?在 Python 3 中,我們可以通過以下方式做到這一點>>> d = {'apple':2, 'banana':3, 'almond':2, 'beetroot':3, 'peach':4}>>> [k for k, v in sorted(d.iteritems(), key=lambda(k, v): (-v, k))]['peach', 'banana', 'beetroot', 'almond', 'apple']這是 Python 鏈接的等效問題的鏈接注意:這個問題詢問如何按值對地圖進行排序。我的問題是特定于按值排序,然后按鍵(如果值等于)。
查看完整描述

1 回答

?
HUX布斯

TA貢獻1876條經(jīng)驗 獲得超6個贊

您無法對map.

  1. 將 轉(zhuǎn)換map為鍵值對結(jié)構(gòu)的切片。

  2. 對切片進行排序(另請參見如何使用多個排序參數(shù)對結(jié)構(gòu)進行排序?

例如像這樣:

func main() {

    wordFrequency := map[string]int{"banana": 3, "america": 2, "abb": 2, "test": 2, "car": 1}


    vec := mapToSlice(wordFrequency)


    sort.Slice(vec, func(i, j int) bool {

        // 1. value is different - sort by value (in reverse order)

        if vec[i].value != vec[j].value {

            return vec[i].value > vec[j].value

        }

        // 2. only when value is the same - sort by key

        return vec[i].key < vec[j].key

    })


    fmt.Printf("%v", vec)

}


func mapToSlice(in map[string]int) []KV {

    vec := make([]KV, len(in))

    i := 0

    for k, v := range in {

        vec[i].key = k

        vec[i].value = v

        i++

    }

    return vec

}


type KV struct {

    key   string

    value int

}

印刷:


[{banana 3} {abb 2} {america 2} {test 2} {car 1}]

現(xiàn)場演示


查看完整回答
反對 回復 2022-10-17
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號