2014-11-02 24 views
1

有一組數據:地圖一個值的所有值與一個共同的關係斯卡拉

{sentenceA1}{\t}{sentenceB1} 
{sentenceA1}{\t}{sentenceB2} 
{sentenceA2}{\t}{sentenceB1} 
{sentenceA3}{\t}{sentenceB1} 
{sentenceA4}{\t}{sentenceB2}  

我想一個sentenceA映射到所有具有共同sentenceB Scala中這樣的結果將是什麼句子像這樣:

{sentenceA1}->{sentenceA2,sentenceA3,sentenceA4} or 

{sentenceA2}->{sentenceA1, sentenceA3} 

回答

1
val lines = List(
    "sentenceA1\tsentenceB1", 
    "sentenceA1\tsentenceB2", 
    "sentenceA2\tsentenceB1", 
    "sentenceA3\tsentenceB1", 
    "sentenceA4\tsentenceB2" 
) 

val afterSplit = lines.map(_.split("\t")) 

val ba = afterSplit 
    .groupBy(_(1)) 
    .mapValues(_.map(_(0))) 

val ab = afterSplit 
    .groupBy(_(0)) 
    .mapValues(_.map(_(1))) 

val result = ab.map { case (a, b) => 
    a -> b.foldLeft(Set[String]())(_ ++ ba(_)).diff(Set(a)) 
} 
+0

我得到的錯誤(字符串,可迭代[字符串])不帶參數 在BA(_) – Jonathan 2014-11-02 18:20:11

+0

這個錯誤在我的代碼發生指點?這就像你的'線路'或其他輸入數據具有不正確的類型 - 'Iterator'而不是'Seq'。嘗試你的變量的調試類型。 – 2014-11-02 18:35:04

+0

通過scala把他們變成Seq的想法? – Jonathan 2014-11-02 19:30:59

相關問題