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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我想按值的頻率對(duì)列表進(jìn)行排序并區(qū)分它 c#

我想按值的頻率對(duì)列表進(jìn)行排序并區(qū)分它 c#

C#
慕桂英3389331 2022-11-22 15:32:45
例如,我有一個(gè)整數(shù)列表List<int> Lst = {1,1,1,2,2,3,3,3,4,4}我希望這個(gè)列表是Lst = {1,3,2,4}(按值的頻率和不同排序,所以 1 是第一個(gè),之后是 3,之后是 2,然后是 4 感謝您的幫助:D我正在做一個(gè)項(xiàng)目,我有一個(gè)這樣的列表,我需要重新排列它我還沒(méi)有嘗試讓它與代碼一起工作,因?yàn)槲蚁氩怀鲎屗ぷ鞯姆椒ㄎ蚁M瘮?shù)的輸出是一個(gè)像 {1,3,2,4} 這樣排列的列表 謝謝 :D
查看完整描述

1 回答

?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

使用 Linq 相當(dāng)簡(jiǎn)單GroupBy:


var input = new [] {1,1,1,2,2,3,3,3,4,4};

var output = input.GroupBy(x => x)

    .OrderByDescending(x => x.Count())

    .Select(x => x.Key)

    .ToList();

  • GroupBy(x => x):創(chuàng)建 4 個(gè)組的列表。每個(gè)組都有一個(gè)鍵,它是數(shù)字,值是組的成員。所以你會(huì)有類似的東西{ 1: [1, 1, 1], 2: [2, 2], 3: [3, 3, 3], 4: [4, 4] }

  • OrderByDescending(x => x.Count()):按組中項(xiàng)目的數(shù)量對(duì)組進(jìn)行排序,最大的組在前。所以你得到{ 1: [1, 1, 1], 3: [3, 3, 3], 2: [2, 2], 4: [4, 4] }

  • Select(x => x.Key):從每組中取出鑰匙,所以你得到[1, 3, 2, 4]

  • ToList(): 把它全部變成一個(gè)列表

如果有兩組具有相同數(shù)量的項(xiàng)目——在您的示例中,有三個(gè) 1 和三個(gè) 3——那么這將按照它們?cè)谳斎胫谐霈F(xiàn)的順序?qū)λ鼈冞M(jìn)行排序(因此,這里的輸出是[1, 3, 2, 4],因?yàn)?1在輸入中出現(xiàn)在 3 之前)。

這是因?yàn)椋ㄒ?jiàn)備注)的排序行為:GroupBy

IGrouping 對(duì)象的生成順序基于生成每個(gè) IGrouping 的第一個(gè)鍵的源中元素的順序。分組中的元素按照它們?cè)谠创a中出現(xiàn)的順序生成。

并且事實(shí)OrderByDescending是穩(wěn)定的(同樣,請(qǐng)參見(jiàn)備注),因此如果兩個(gè)項(xiàng)目比較相等,則它們的順序?qū)⒈槐A簦?/p>

此方法執(zhí)行穩(wěn)定排序;也就是說(shuō),如果兩個(gè)元素的鍵值相等,則保留元素的順序。相反,不穩(wěn)定排序不會(huì)保留具有相同鍵的元素的順序。


查看完整回答
反對(duì) 回復(fù) 2022-11-22
  • 1 回答
  • 0 關(guān)注
  • 111 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)