展平未知长度的元组
Flatten a tuple of unknown length
我有一个由 Spark 在连接后生成的元组。它有一个键,一个元组中的两列,然后是第二个 table 中的其余列。我不一定知道第二个有多少列table。
因此,例如:
(2324234534, (('23213','2013/03/02'), 12.32, 32.4, 45))
如果在 PySpark 中像这样的 zip、日期元组后有一列,我已经能够分离元组:
x.map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1])))
在Python中:
map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1])), x)
这会产生我正在寻找的输出:
(2324234534, ('23213','2013/03/02', 12.32))
如果我想在 zip、date 之后有不止一列,那么我有这个代码:
x.map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1:])))
但是,它会产生以下输出:
(2324234534, ('23213','2013/03/02', (12.32, 32.4, 45)))
无论哪种方式,我当前的方法都是 hacky,不会产生我正在寻找的结果。也许我有兴趣学习如何总体上展平元组(我在这个主题上发现的其他线程将元组变成列表,这不是我想要的 100%)
如果我正确理解了您的目标,我相信这会达到您的要求:
In [11]: a = (2324234534, (('23213','2013/03/02'), 12.32, 32.4, 45))
In [12]: a[:1] + (a[1][0] + a[1][1:],)
Out[12]: (2324234534, ('23213', '2013/03/02', 12.32, 32.4, 45))
我有一个由 Spark 在连接后生成的元组。它有一个键,一个元组中的两列,然后是第二个 table 中的其余列。我不一定知道第二个有多少列table。
因此,例如:
(2324234534, (('23213','2013/03/02'), 12.32, 32.4, 45))
如果在 PySpark 中像这样的 zip、日期元组后有一列,我已经能够分离元组:
x.map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1])))
在Python中:
map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1])), x)
这会产生我正在寻找的输出:
(2324234534, ('23213','2013/03/02', 12.32))
如果我想在 zip、date 之后有不止一列,那么我有这个代码:
x.map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1:])))
但是,它会产生以下输出:
(2324234534, ('23213','2013/03/02', (12.32, 32.4, 45)))
无论哪种方式,我当前的方法都是 hacky,不会产生我正在寻找的结果。也许我有兴趣学习如何总体上展平元组(我在这个主题上发现的其他线程将元组变成列表,这不是我想要的 100%)
如果我正确理解了您的目标,我相信这会达到您的要求:
In [11]: a = (2324234534, (('23213','2013/03/02'), 12.32, 32.4, 45))
In [12]: a[:1] + (a[1][0] + a[1][1:],)
Out[12]: (2324234534, ('23213', '2013/03/02', 12.32, 32.4, 45))