之前我问过这个问题,但目前还不清楚所以我添加了更多解释,以便更清楚并获得帮助。 replace strings with ZipWithIndex/ZipWithUniqueID
我正在尝试使用ZipWithIndex或ZipWithUniqueID
将字符串映射到数字假设我有这种格式
("u1",("name", "John Sam"))
("u2",("age", "twinty Four"))
("u3",("name", "sam Blake"))
我想要这个结果
(0,(3,4))
(1,(5,6))
(2,(3,8))
我尝试将zipWithIndex直接用于三元组,但我将每个字母映射到一个数字,我想要映射整个字符串而不分割它。 并尝试提取键值对中的第一个元素 所以我做了
val first = file.map(line=> line._1).distinct()
then apply ZipWithIndex
val z1= first.ZipWithIndex()
我得到了这样的结果
("u1",0)
("u2",1)
("u3",2)
现在我需要获取ids /数字并在原始文件中进行更改。我需要在hashTable中保留所有不同的id /数字,以便以后能够查找它们。 有没有办法做到这一点?有什么建议吗?
我希望你有我的问题
答案 0 :(得分:0)
你的意思是这样的吗?
val file = List(("u1",("name", "John Sam")),
("u2",("age", "twinty Four")),
("u3",("name", "sam Blake")))
val first = file.map(line=> line._1) ++
file.flatMap(line=> List(line._2._1, line._2._2)).distinct
val z1: Map[String,Int] = Map[String,Int](first.zipWithIndex:_*)
file.map{ l =>
(z1(l._1),
(z1(l._2._1), z1(l._2._2)))
}