根据规则,我无法找到任何解决方案如何在 Pig 中从一个元组生成一组元组:
输入:
((1,2,3),(a,b,c),(aaa,bbb,ccc))
输出:
(1,a,aaa)
(2,b,bbb)
(3,c,ccc)
假设应该应用TOBAG和FLATTEN,但这看起来太棘手了。
答案 0 :(得分:1)
[tuple(original[i] for original in originals) for i in range(len(original[0]))]
如果您的原始列表被称为originals
,则会为您提供第二个元组列表。
答案 1 :(得分:1)
使用zip
内置函数和参数解包(" star" args):
>>> x = ((1,2,3),('a','b','c'),('aaa','bbb','ccc'))
>>> tuple(zip(*x))
((1, 'a', 'aaa'), (2, 'b', 'bbb'), (3, 'c', 'ccc'))
>>> for y in zip(*x):
print(y)
(1, 'a', 'aaa')
(2, 'b', 'bbb')
(3, 'c', 'ccc')