我有val states = Map("AL" -> "Alabama", "AK" -> "Alaska")
我想将states
的密钥转换为Seq(String)
,但我得到的是Seq(Set(String))
。
我试过
Seq(states.keys.toString)
res3: Seq[String] = List(Set(AL, AK))
答案 0 :(得分:1)
您不希望地图中有重复的密钥。这就是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]
,.toList
/ toSeq
Set
可以更改数据结构。
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)
答案 1 :(得分:0)
这应该会给你一个Seq[String]
Map("AL" -> "Alabama", "AK" -> "Alaska").keys.toSeq
res0: Seq[String] = Vector(AL, AK)
答案 2 :(得分:0)
那不是Python。 Seq(set)
没有"转换"一组到一个序列。相反,它构造一个单元素序列,其中set为单个元素。
你想要
states.keys.toSeq