2012-09-26 24 views
0

我用地圖來掃描輸入文件併產生一個字數。 地圖鍵是單詞,值是該單詞的出現次數。 我將地圖轉換爲列表並按值升序排列。 因此,我有2個元組的列表,其中列表的第一個位置出現頻率最低的詞,列表最後一個位置出現頻率最高的詞。如何從2tuples列表中的最後一個條目中檢索第二個值?

我知道我可以很容易地得到2tuple與myList.last列表的最後一個位置,然後訪問結果的第二個元素與myTuple._2

能將它的一行來完成碼? 我想盡可能簡潔。

回答

1

你的意思是:

val muList = List(("aardvark", 1), ("cow", 5), ("dog", 9)) 
muList.last._2 // 9 

這將得到muList的最後一個元素,然後在元組中的第二項在那裏發現。

但是,您不需要轉換爲List並對其進行排序。你可以從Map獲得最大數元素,它會快得多:

val mu = Map("aardvark" -> 1, "dog" -> 9, "cow" -> 5) 
val highestCountPair = mu.maxBy(_._2) // ("dog",9) 
highestCountPair._2      // 9 

或者,如果你不關心的話都:

mu.map(_._2).max // 9 
+0

也做到了!感謝您及時的回覆! – NickAbbey

+0

不幸的是,我仍然需要轉換爲一個列表,因爲輸出必須按升序排列。但是,您使用maxBy(_._ 2)的建議非常感謝,因爲我剛剛學到了一些新的東西(並且非常有用!) :)再次感謝 – NickAbbey

+0

不是'last'棄用? –

相關問題