如何将地图键转换为字符串而不设置?

时间:2018-06-09 01:04:31

标签: scala

我有val states = Map("AL" -> "Alabama", "AK" -> "Alaska")

我想将states的密钥转换为Seq(String),但我得到的是Seq(Set(String))

我试过

Seq(states.keys.toString)
res3: Seq[String] = List(Set(AL, AK))

3 个答案:

答案 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