Groupby匹配到列表列表中

时间:2016-09-22 14:20:31

标签: python-2.7

我有两个匹配元素的列表。例如:

L1 = [A, B] L2 = [1_A, i_X, i_Y, 2_A, x_B, y_B, z_B]

我希望将匹配因子分组到新列表中,如下所示:

match_grouplist = [[1_A, 2_A],[x_B, y_B, z_B]]

我试过了,

pull = []; tmp = []   
for entry in range(len(L1)):
        spp = L[entry]
        for ele in L2:
            if ele.split("_")[1] == spp:
                tmp.append(ele) 
         pull.extend(tmp)

它只生成一个列表。任何人都可以建议如何将其列入清单?

先谢谢,

AP

1 个答案:

答案 0 :(得分:1)

以下是使用列表推导的解决方案:

[ [e2 for e2 in L2 if e2.endswith('_'+e1)] for e1 in L1 ]

这意味着对于L1的每个元素e1,我们将查找以_e1结尾的L2元素,并将其返回。

结果为[['1_A', '2_A'], ['x_B', 'y_B', 'z_B']]