Zählen Sie die Vorkommen jedes Elements in einer Liste [Liste [T]] in Scala

Angenommen, Sie haben

val docs = List(List("one", "two"), List("two", "three"))

wo z.B. Liste ("eins", "zwei") stellt ein Dokument dar, das die Begriffe "eins" und "zwei" enthält, und Sie möchten für jeden Begriff eine Karte mit der Häufigkeit des Dokuments erstellen, d. H. In diesem Fall

Map("one" -> 1, "two" -> 2, "three" -> 1)

Wie würdest du das in Scala machen? (Und auf effiziente Weise unter der Annahme eines viel größeren Datensatzes.)

Mein erster Java-ähnlicher Gedanke ist, eine veränderbare Karte zu verwenden:

val freqs = mutable.Map.empty[String,Int]
for (doc <- docs)
  for (term <- doc)
    freqs(term) = freqs.getOrElse(term, 0) + 1

was funktioniert gut genug, aber ich frage mich, wie man das "funktionaler" machen kann, ohne auf eine veränderbare Karte zurückzugreifen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage