Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 按键合并不同的地图_List_Scala_Dictionary_Collections - Fatal编程技术网

List 按键合并不同的地图

List 按键合并不同的地图,list,scala,dictionary,collections,List,Scala,Dictionary,Collections,我如何通过两个贴图的键在短时间内合并它们,但它们可能有不同的键。 比如我有 val query1 = Map(("email", "aa@ya.ru"), ("phone", "ph0997832")) val query2 = Map(("email", "bb@ya.ru"), ("fax", "fax0997832")) 我想要这样的东西: List("email", "phone", "fax") List(List("aa@ya.ru", "ph0997832", ""), List

我如何通过两个贴图的键在短时间内合并它们,但它们可能有不同的键。 比如我有

val query1 = Map(("email", "aa@ya.ru"), ("phone", "ph0997832"))
val query2 = Map(("email", "bb@ya.ru"), ("fax", "fax0997832"))
我想要这样的东西:

List("email", "phone", "fax")
List(List("aa@ya.ru", "ph0997832", ""), List("bb@ya.ru", "", "fax0997832"))
使用:

scala> val queries = List(query1, query2)
queries: List[Map[String,String]] = List(
                                      Map(email -> aa@ya.ru, phone -> ph0997832),
                                      Map(email -> bb@ya.ru, fax -> fax0997832)
                                    )
拿到钥匙很容易;在每个
地图上调用
.keys
,展平结果并删除重复项:

scala> val keys = queries.flatMap(_.keys).distinct
keys: List[String] = List(email, phone, fax)
获得第二份名单;获取查询的所有键的值,使用
.getOrElse(k,“”)
获取空字符串,而不是

scala> queries.map(q => keys.map(k => q.getOrElse(k, "")))
res0: List[List[String]] = List(List(aa@ya.ru, ph0997832, ""),
                                List(bb@ya.ru, "", fax0997832))
副本