我有val states = Map("AL" -> "Alabama", "AK" -> "Alaska")
我想把states
的键转换成Seq(String)
,但是我得到的是Seq(Set(String))
。
我试过了
Seq(states.keys.toString)
res3: Seq[String] = List(Set(AL, AK))
发布于 2018-06-09 09:11:52
您不希望在映射中有重复的键。这就是keys
返回Set[K]
的原因。请参阅下面的keys
定义
/** Collects all keys of this map in a set.
* @return a set containing all keys of this map.
*/
def keySet: Set[K] = new DefaultKeySet
def keys: Iterable[K] = keySet
.keys
实际上返回的是Iterable[K]
,你可以在Set
上使用.toList
/ toSeq
来改变数据结构。
scala> val states = Map("AL" -> "Alabama", "AK" -> "Alaska")
states: scala.collection.immutable.Map[String,String] = Map(AL -> Alabama, AK -> Alaska)
scala> val stateNames = states.keys.toList
stateNames: List[String] = List(AL, AK)
或
scala> val stateNames = states.keys.toSeq
stateNames: Seq[String] = Vector(AL, AK)
发布于 2018-06-09 09:16:33
这应该会给你一个Seq[String]
Map("AL" -> "Alabama", "AK" -> "Alaska").keys.toSeq
res0: Seq[String] = Vector(AL, AK)
发布于 2018-06-09 09:18:24
那不是Python。Seq(set)
不会将集合“转换”为序列。相反,它构造一个单元素序列,将set作为单元素。
你想要的
states.keys.toSeq
https://stackoverflow.com/questions/50770027
复制相似问题