假设我有一组列定义:
Col1: value11 value12 value13
Col2: value21 value22
Col3: value31 value32 value33
...
Run Code Online (Sandbox Code Playgroud)
给定列的一些子集 - 2个或更多 - 我想找到这些列的所有可能值.假设我选择上面的第1列和第2列:
(value11 value21)
(value11 value22)
(value12 value21)
(value12 value22)
(value13 value21)
(value13 value22)
Run Code Online (Sandbox Code Playgroud)
如果我选择了2:3:
(value21 value31)
(value21 value32)
(value21 value33)
(value22 value31)
(value22 value32)
(value22 value33)
Run Code Online (Sandbox Code Playgroud)
如果我选择了全部三个:
(value11 value21 value31)
(value11 value21 value32)
...
Run Code Online (Sandbox Code Playgroud)
我在python中实现这个,我想要一个快速的算法来做到这一点.我的输入是一个元组列表:(columnName,columnValueList)
有什么建议?
Jer*_*ell 16
获得这个的最好方法是使用itertools.product().例如:
import itertools
group1 = ['a', 'b']
group2 = ['c', 'd']
print list(itertools.product(group1, group2))
#==> [('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]
Run Code Online (Sandbox Code Playgroud)
此函数接受多个参数(即多列).
有关iterools.product()的更多帮助,请参阅此内容.