我有一個地圖[字符串,序列[字符串],並希望基本上它隱蔽的地圖[字符串,字符串]因爲我知道序列只有一個值。如何轉換地圖[字符串,序列[字符串]以地圖[字符串,字符串]
回答
別人已經提到mapValues
,但如果我是你,我會做這樣的:
scala> val m = Map(1 -> Seq(1), 2 -> Seq(2))
m: scala.collection.immutable.Map[Int,Seq[Int]] = Map(1 -> List(1), 2 -> List(2))
scala> m.map { case (k,Seq(v)) => (k,v) }
res0: scala.collection.immutable.Map[Int,Int] = Map(1 -> 1, 2 -> 2)
兩個原因:
的
mapValues
方法產生視圖的結果Map,這意味着函數將每次重新計算 y ou訪問一個元素。除非您計劃一次只訪問每個元素,或者您只打算訪問其中一小部分元素,否則不希望重新計算髮生。使用的情況下,與
(k,Seq(v))
確保如果函數曾經看到一個不包含正好一個元素序列的異常將被拋出。如果有零個元素,則使用_(0)
或_.head
將拋出異常,但如果您有多個元素,則不會投訴,這可能會在事情丟失而沒有錯誤時稍後導致神祕錯誤。
我想我通過以下操作得到它:
mymap.flatMap(x => Map(x._1 -> x._2.head))
這是一個開始。考慮將*置於帖子本身。但是,使用普通的「地圖」(或其他專用功能)可以更簡單,更高效地完成。 – 2012-09-18 17:36:52
您可以使用mapValues()
。
scala> Map("a" -> Seq("aaa"), "b" -> Seq("bbb"))
res0: scala.collection.immutable.Map[java.lang.String,Seq[java.lang.String]] = M
ap(a -> List(aaa), b -> List(bbb))
scala> res0.mapValues(_(0))
res1: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map(a
-> aaa, b -> bbb)
編寫'.head'而不是'(0)'' –
另一項建議:
m mapValues { _.mkString }
這一個不可知的序列是否具有多個元素 - 它會正好連接所有串在一起。如果你關心的每個值的重新計算,你可以做到這一點的前期:
(m mapValues { _.mkString }).view.force
- 1. Java的轉換{字符串,字符串} []地圖<字符串,字符串[]>
- 2. Scala將地圖[字符串,列表[字符串]]轉換爲地圖[字符串,字符串]
- 3. 字符串轉換列表分爲地圖[字符串,列表]
- 4. 構建地圖[字符串,字符串]
- 5. 轉換scala地圖字符串 - >字符串轉換爲字符串 - >地圖
- 6. 解碼JSON到地圖[字符串]地圖[字符串]字符串
- 7. 強制類型轉換:地圖[字符串,字符串]以地圖[字符串,對象]
- 8. 轉換地圖<字符串,字符串>爲JSON
- 9. 強制類型轉換地圖[字符串,對象]到地圖[字符串,字符串]
- 10. Java的地圖<字符串,地圖<字符串,對象>>轉換爲字符串和背部
- 11. 如何獲得字符串[地圖<字符串,字符串>的]
- 12. 轉換地圖<String,字符串>地圖<字符串,對象>
- 13. 轉換字符串字符串字面
- 14. 字符串轉換列表排序的地圖字符串長度爲重點
- 15. 如何通過Scala的地圖[字符串,地圖[字符串,字符串]]以普通JavaScript對象
- 16. 轉換字符串[字符串:任何]
- 17. 生成地圖[字符串,列表[字符串]從列表[(字符串,字符串)]
- 18. 複製地圖[字符串,列表[MyObject]]複製地圖[字符串,列表[字符串]] scala
- 19. 轉換地圖來查詢字符串
- 20. 字符串轉換爲JS地圖
- 21. 斯卡拉:列表[Tuple3]到地圖[字符串,字符串]
- 22. 如何將圖像上的字符串轉換爲字符串?
- 23. 將字符串轉換爲字符串
- 24. 將字符串轉換爲字符串
- 25. C++字符串到字符串轉換
- 26. 將字符串轉換爲字符串
- 27. 如何將字符串的字符串轉換爲字符?
- 28. 如何將字符串轉換爲地圖中的Seq [字符串]
- 29. 斯卡拉集合:util.Map [字符串,AnyRef] - 地圖[字符串,字符串]
- 30. 轉換地圖<字符串,字符串>到陣列中的jquery
的操作稱爲「地圖」(不要與地圖ADT混淆)。什麼試過了? – 2012-09-18 17:35:12
看起來像有人問了一個非常類似的問題早在1月:http://stackoverflow.com/questions/8914954/how-to-convert-a-string-to-a-seqstring-in-a-map – dhg
@dhg公頃那是我! – chiappone