组合成组的Python方法

rnmwe5a2  于 2023-02-11  发布在  Python
关注(0)|答案(2)|浏览(156)

我有下面的列表:
| 群|电码|
| - ------|- ------|
| A类|1个|
| A类|第二章|
| A类|三个|
| B|四个|
| B|五个|
| B|六个|
| B|七|
如何用Python的方式创建下面的列表?:
| 群|电码|电码|
| - ------|- ------|- ------|
| A类|1个|第二章|
| A类|1个|三个|
| A类|第二章|三个|
| B|四个|五个|
| B|四个|六个|
| B|四个|七|
| B|五个|六个|
| B|五个|七|
| B|六个|七|
我看到另一张票建议使用itertools导入组合。但是如何通过分组限制:我不需要所有匹配项,只需要组中的匹配项。

iqxoj9l9

iqxoj9l91#

您需要使用itertool来获取每个组的所有可能的代码组合

from itertools import combinations
A = [1,2,3] 
B = [4,5,6,7]

comb_A = combinations(A, 2)
comb_B = combinations(B, 2)

#to see the results iterate through all the combinations
# For A (the same applies for B)
for comb in comb_A:
    print(comb)
>>> (1,2)
>>> (1,3)
>>> (2,3)

注:如果你能提供“清单”,我们就能给予更具体的答案,这会更有帮助

fkvaft9z

fkvaft9z2#

由于您没有发布您所尝试的MWE,我将向您展示您可以自己实现的步骤。
1.构建一个数据组字典,比如group_dict
1.为result创建一个空列表。
1.遍历group_dict中的项目,其中每个项目都是一个组名和该组的代码列表。
1.对于每组,使用combinations函数生成2个代码的所有可能组合。
1.对于每个组合,将组名、第一个代码和第二个代码的元组附加到result
这应该会给予如下结果:

[('A', 1, 2), ('A', 1, 3), ('A', 2, 3), ('B', 4, 5), ('B', 4, 6), ('B', 4, 7), ('B', 5, 6), ('B', 5, 7), ('B', 6, 7)]

相关问题