2013-03-10 49 views
0

我需要在列表/列中查找可能的组合(两对),并在相对列/列表上执行相对操作。就像,减去对的值。Python:在列中查找组合并使用索引值执行相关操作

例 输入:

column 1 column2 
A   10 
C   20 
B   30 

输出

column1 coulum2 #internal operation 
[A,B] -20  A-B 
[A,C] -10  A-C 
[C,B] -10  C-B 

我已经使用itertools.combinations对于组合。

任何提示要做到这一点?

+0

是的。我已经从文件中读取了值。我也有可能的组合。 – Zero 2013-03-10 15:41:05

+0

那么究竟是什么问题呢?你想达到什么目的? – 2013-03-10 15:44:05

+0

我发布了演示示例。如果我有两列。一个与[A,B,C]和其他与他们的价值观[10,20,30]。我需要得到减法的值(pair(A,B))。即组合[A,B],我需要输出值= 10-30 = -10。通过itertools.combinations,我可以获得所有组合。但是,不是这种操作或指数在组合上的位置。 – Zero 2013-03-10 15:48:40

回答

1

把你的初始栏放到地图P(P = {'A': 10, ..}等),而不是只计算w = [((c1, c2), P[c1] - P[c2]) for c1, c2 in itertools.combinations(P.keys(), 2)]。它应该包含您想要放入结果列的所有数据。

要按列获得数据:letters_pairs, values = zip(*w)

+0

作品魅力!不过需要将这些值分成单独的列表。 – Zero 2013-03-10 16:21:34

+0

只需使用'zip'。让'w = [((c1,c2),P [c1] - P [c2])代替itertools.combinations(P.keys(),2)]中的c1,c2, * w)' – kkonrad 2013-03-10 16:36:21

+0

是的。我用它。无论如何感谢发布,@ kkonard! – Zero 2013-03-10 16:48:00

相关问题