映射到 Scala 中的列表 [Tuple2] - 删除重复项?
Map to List[Tuple2] in Scala - removes duplicates?
我正在尝试将地图转换为元组列表,给定如下地图
Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3)
我想要这样的输出
List(("a",2),("a",4),("a",5),("b",6),("b",1),("c",3))
我尝试关注
val seq = inputMap.toList //output (a,5)(b,1)(c,3)
var list:List[(String,Int)] = Nil
for((k,v)<-inputMap){
(k,v) :: list
} //output (a,5)(b,1)(c,3)
为什么要删除重复项?我没有看到其他以 "a" 作为键的元组。
问题出在 Map
,它的键是 Set
,所以你不能有两次相同的键。这是因为 Map
s 是字典,它被用来通过它的键访问一个值,所以键必须是唯一的。因此,构建器仅保留使用键 "a"
.
给出的最后一个值
顺便说一下,Map
已经有一个方法 toList
,它完全符合您实施的要求。
那是因为 Map
不允许重复键:
val map = Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3)
println(map) // Map(a -> 5, b -> 1, c -> 3)
由于地图有重复的键,它会在创建地图时删除重复的条目。
Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3)
它会变成,
Map(a -> 5, b -> 1, c -> 3)
所以会在short map上进行其他操作
我正在尝试将地图转换为元组列表,给定如下地图
Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3)
我想要这样的输出
List(("a",2),("a",4),("a",5),("b",6),("b",1),("c",3))
我尝试关注
val seq = inputMap.toList //output (a,5)(b,1)(c,3)
var list:List[(String,Int)] = Nil
for((k,v)<-inputMap){
(k,v) :: list
} //output (a,5)(b,1)(c,3)
为什么要删除重复项?我没有看到其他以 "a" 作为键的元组。
问题出在 Map
,它的键是 Set
,所以你不能有两次相同的键。这是因为 Map
s 是字典,它被用来通过它的键访问一个值,所以键必须是唯一的。因此,构建器仅保留使用键 "a"
.
顺便说一下,Map
已经有一个方法 toList
,它完全符合您实施的要求。
那是因为 Map
不允许重复键:
val map = Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3)
println(map) // Map(a -> 5, b -> 1, c -> 3)
由于地图有重复的键,它会在创建地图时删除重复的条目。
Map("a"->2,"a"->4,"a"->5,"b"->6,"b"->1,"c"->3)
它会变成,
Map(a -> 5, b -> 1, c -> 3)
所以会在short map上进行其他操作