在Scala/Spark中获取键/值对的键

在Scala/Spark中获取键/值对的键,scala,key-value,Scala,Key Value,我使用Scala/Spark中的箭头操作符创建了一个键值对: val picardsShip = "Picard" -> "Enterprise-D" 我通过使用println(picardsShip.\u 2)提取了值,并按照预期返回值Enterprise-D。但是,在本例中,我想提取密钥以获得Picard。当我在使用的IntelliJ IDEA编辑器中键入picardsShip.时,我没有看到任何提示获取密钥的明显属性或方法的内容。有什么想法吗

我使用Scala/Spark中的箭头操作符创建了一个键值对:

val picardsShip = "Picard" -> "Enterprise-D"

我通过使用
println(picardsShip.\u 2)
提取了值,并按照预期返回值
Enterprise-D
。但是,在本例中,我想提取密钥以获得
Picard
。当我在使用的IntelliJ IDEA编辑器中键入
picardsShip.
时,我没有看到任何提示获取密钥的明显属性或方法的内容。有什么想法吗?谢谢。

请注意,您尚未创建密钥/值对。您已经创建了一个元组。使用REPL时,您可以看到发生了什么:

scala>val picardsShip=“Picard”->“企业-D”
picardsShip:(字符串,字符串)=(Picard,Enterprise-D)
要访问第一个值,请使用@Krzysztof Atłasik建议的值,并使用
。\u 1

scala>picardsShip.\u 1
res1:String=Picard
是的,您可以使用
->
操作符创建一个键/值对,但如果您希望它像处理键/值对一样对其进行操作,则必须将其包装在映射中,使其更加具体。然后你不再有1个键/值对,但理论上没有多个键/值对,这意味着你基本上有一种
Seq
,这就是Scala真正构建的基础。
Map
允许您访问一个API,该API基本上说“好的,这里有一系列可以被视为键值对的项”,并允许您按照期望键值对的方式对其进行操作:

scala>val shipMap:Map[String,String]=Map((“Picard”->“Enterprise-D”))
shipMap:Map[String,String]=Map(Picard->Enterprise-D)
scala>shipMap(“Picard”)
res2:String=Enterprise-D
scala>shipMap.keys.head
res3:String=Picard
scala>shipMap.foreach(kv=>println(kv.\u 1))
皮卡德

println(picardsShip.\u 1)
\u 1
取元组中的第一个元素。@KrzysztofAtłasik我不找第一个元素。我正在寻找
而不是
键的
。这适用于我想提及的任何元素。谢谢。这是一个Scala元组。没有特定于Spark@EmiCareOfCell44你是对的。但我在Spark中使用的是Scala代码。你可以在地图中查找键,而不是在Tuple2中。这是一系列元素。您可以为其索引获取一个元素。例如:
scala>picardsShip.productElement(0)res0:Any=Picard