Supongamos que tengo una lista de tuplas List[(A, B)]
. ¿Cuál es la mejor manera de convertirlo a multimap
, que asigna A
a Set[B]
? ¿Puedo construir un inmutablemultimap
?¿Cómo construir una multimapa a partir de una lista de tuplas en Scala?
21
A
Respuesta
20
¿Puedo construir un multimap inmutable?
No con MultiMap
en la biblioteca estándar de Scala. Por supuesto, puedes escribir el tuyo.
¿Cuál es la mejor manera de convertirlo a multimap?
import scala.collection.mutable.{HashMap, Set, MultiMap}
def list2multimap[A, B](list: List[(A, B)]) =
list.foldLeft(new HashMap[A, Set[B]] with MultiMap[A, B]){(acc, pair) => acc.addBinding(pair._1, pair._2)}
14
estoy un poco confundido, no se asigna Multimap
A
-Set[B]
, se asigna a A
B
donde B
puede tener muchos valores. Como quiere algo inmutable, voy a cambiar esto a Map[A, Set[B]]
que no es Multimap
, pero hace una de las cosas que dijo que quería.
// This is your list of (A, B)
val l = List((1, "hi"),
(2, "there"),
(1, "what's"),
(3, "up?"))
// Group it and snip out the duplicate 'A'
// i.e. it initially is Map[A, List[(A, B)]] and we're going to convert it
// to Map[A, Set[B]]
val m = l.groupBy(e => e._1).mapValues(e => e.map(x => x._2).toSet)
println(m)
// Prints: Map(3 -> Set(up?), 1 -> Set(hi, what's), 2 -> Set(there))
Cuestiones relacionadas
- 1. anexar tuplas a una lista
- 2. ¿Una forma elegante de crear un diccionario de pares, a partir de una lista de tuplas?
- 3. vinculando a una lista de tuplas
- 4. pitón convertir una lista en una lista de tuplas
- 5. ¿Cómo clasifica Python una lista de tuplas?
- 6. Crear un HashMap en Scala a partir de una lista de objetos sin bucle
- 7. ordenar una lista de tuplas en Python
- 8. Construya una lista a partir de una serie de expresiones en Scala
- 9. ¿Cuál es la forma más rápida en python para construir una matriz c a partir de una lista de tuplas de flotadores?
- 10. Construir todo el árbol a partir de una relación de lista de adyacencia SQLAlchemy
- 11. lista de tuplas veces en Scala con desestructuración
- 12. Python cómo reducir en una lista de tuplas?
- 13. ¿Cómo enumero() sobre una lista de tuplas en Python?
- 14. ¿Cómo combinar listas en una lista de tuplas?
- 15. Scala - convertir Lista de listas en una sola Lista: Lista [Lista [A]] en Lista [A]
- 16. Python: conversión de lista de listas a tuplas de tuplas
- 17. Cómo creo una nueva lista a partir de una plantilla de lista (Modelo de objetos cliente)
- 18. Ordenar una lista de tuplas en función de dos elementos
- 19. Construya eficientemente Pandas DataFrame a partir de la lista grande de tuplas/filas
- 20. Cómo crear una colección paralela de Scala a partir de una colección de Java
- 21. analizar una cadena que representa una lista de tuplas
- 22. Scala: cómo crear un mapa inmutable a partir de una colección de Tuple2s?
- 23. Encuentra un elemento en una lista de tuplas
- 24. Cómo construir una LambdaExpression a partir de una LambdaExpression existente sin compilar
- 25. Devolución de un elemento de una lista en Scala
- 26. Trabajar con tuplas de Scala
- 27. Python: Escribir una lista de tuplas en un archivo
- 28. Agrupación Python tuplas lista de tuplas
- 29. Crear menú PyQt a partir de una lista de cadenas
- 30. Cómo crear un scala.collection.immutable.Seq a partir de una lista de Java en Java?
También se puede usar 'mapValues', que en realidad no se producirá una nueva colección, sino que actuará como un' view' asignada en valores. –
'mapValues' - agradable. Nunca he usado ese antes. Actualizado para usar eso en su lugar. –
limpiador aún: 'val m = l groupBy (_._ 1) mapValues (_ map {_._ 2} toSet)' –