具有内部元组的元组向量中的唯一元素
Unique Elements in a Vector of tuples with inner tuples
我有一个包含如下元组的向量:
Vector( (a1,(a2,(a3,a4))),(b1,(b2,(b3,b4))),(c1,(c2,(c3,c4))),...............)
这个向量很长,我得到了 a1、b1、c1...等以及 a2、b2、c2...等的重复(相等)值,a3、b3 也类似, c3,....等
我的要求是:
我想要三个具有独特元素 a1、b1.c1....等、a2、b2、c2....等和 a3、b3、c3....等的向量(即,基于该特定元素的 first appearance
不同。)
有没有办法在 Scala 中使用简洁的代码来做到这一点假设
所有这些值都是整数还是双精度值?
示例:
GIVEN 向量:
Vector( (2,(8,(4,5))),(6,(3,(7,9))),(2,(3,(7,9))),(2,(8,(4,5))))
答案:
Vector1 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) )
Vector2 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) )
Vector3 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) )
即,根据该特定元素的 first appearance
不同。
您可以使用groupBy
,然后从每个组中获取第一个结果:
val vec = Vector((2, (8, (4, 5))),
(6, (3, (7, 9))),
(2, (3, (7, 9))),
(2, (8, (4, 5))))
val vector1 = vec.groupBy(_._1).values.map(_.head)
val vector2 = vec.groupBy(_._2._1).values.map(_.head)
val vector3 = vec.groupBy(_._2._2._1).values.map(_.head)
这按要求按第一个元素打破了联系。但请注意,vector1、vector2 和 vector3 中的元素顺序无法保证。
我有一个包含如下元组的向量:
Vector( (a1,(a2,(a3,a4))),(b1,(b2,(b3,b4))),(c1,(c2,(c3,c4))),...............)
这个向量很长,我得到了 a1、b1、c1...等以及 a2、b2、c2...等的重复(相等)值,a3、b3 也类似, c3,....等 我的要求是:
我想要三个具有独特元素 a1、b1.c1....等、a2、b2、c2....等和 a3、b3、c3....等的向量(即,基于该特定元素的 first appearance
不同。)
有没有办法在 Scala 中使用简洁的代码来做到这一点假设 所有这些值都是整数还是双精度值?
示例:
GIVEN 向量:
Vector( (2,(8,(4,5))),(6,(3,(7,9))),(2,(3,(7,9))),(2,(8,(4,5))))
答案:
Vector1 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) )
Vector2 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) )
Vector3 : Vector( (2,(8,(4,5))),(6,(3,(7,9))) )
即,根据该特定元素的 first appearance
不同。
您可以使用groupBy
,然后从每个组中获取第一个结果:
val vec = Vector((2, (8, (4, 5))),
(6, (3, (7, 9))),
(2, (3, (7, 9))),
(2, (8, (4, 5))))
val vector1 = vec.groupBy(_._1).values.map(_.head)
val vector2 = vec.groupBy(_._2._1).values.map(_.head)
val vector3 = vec.groupBy(_._2._2._1).values.map(_.head)
这按要求按第一个元素打破了联系。但请注意,vector1、vector2 和 vector3 中的元素顺序无法保证。