python实现三个或三个以上列表之间元素相互组合

先说需求:

需求主要就是:如下可见

不同的条件对应不同的值,我需要做的就是将所有的条件用python进行组合。

将所有看作是一个字典,每一个key对应一个情况1,情况1中还有不同的条件,例如审核状态为情况1,审核状态中还存在这已审核,未审核等。。。

代码如下:

from itertools import combinations
from functools import reduce

list1 = ['已通过','未审核','已废弃','已完结','以删除']
list2 = ['话题','图文','案例','文章']
list3 = ['0分','1分','2分']


dict = {
    '审核状态':list1,
    '内容类型':list2,
    '内容得分':list3,
}


lists=[]
def suiji(num):
    for key in combinations(dict.keys(), num):
        for i in key:
            lists.append(dict[i])
        # print(lists)
        code = ','
        fn = lambda x, code=',': reduce(lambda x, y: [str(i) + code + str(j) for i in x for j in y], x)
        print(fn(lists, code))
        lists.clear()
        print('------------end----------')

if __name__ == '__main__':
    suiji(2)

运行结果为:

/Users/dongyue/Desktop/code/venv/bin/python /Users/dongyue/Desktop/code/learn/筛选随机组合.py
*****列表组合情况***** [['已通过', '未审核', '已废弃', '已完结', '以删除'], ['话题', '图文', '案例', '文章']]
['已通过,话题', '已通过,图文', '已通过,案例', '已通过,文章', '未审核,话题', '未审核,图文', '未审核,案例', '未审核,文章', '已废弃,话题', '已废弃,图文', '已废弃,案例', '已废弃,文章', '已完结,话题', '已完结,图文', '已完结,案例', '已完结,文章', '以删除,话题', '以删除,图文', '以删除,案例', '以删除,文章']
------------end----------
*****列表组合情况***** [['已通过', '未审核', '已废弃', '已完结', '以删除'], ['0分', '1分', '2分']]
['已通过,0分', '已通过,1分', '已通过,2分', '未审核,0分', '未审核,1分', '未审核,2分', '已废弃,0分', '已废弃,1分', '已废弃,2分', '已完结,0分', '已完结,1分', '已完结,2分', '以删除,0分', '以删除,1分', '以删除,2分']
------------end----------
*****列表组合情况***** [['话题', '图文', '案例', '文章'], ['0分', '1分', '2分']]
['话题,0分', '话题,1分', '话题,2分', '图文,0分', '图文,1分', '图文,2分', '案例,0分', '案例,1分', '案例,2分', '文章,0分', '文章,1分', '文章,2分']
------------end----------

Process finished with exit code 0
/Users/dongyue/Desktop/code/venv/bin/python /Users/dongyue/Desktop/code/learn/筛选随机组合.py
['已通过,话题', '已通过,图文', '已通过,案例', '已通过,文章', '未审核,话题', '未审核,图文', '未审核,案例', '未审核,文章', '已废弃,话题', '已废弃,图文', '已废弃,案例', '已废弃,文章', '已完结,话题', '已完结,图文', '已完结,案例', '已完结,文章', '以删除,话题', '以删除,图文', '以删除,案例', '以删除,文章']
------------end----------
['已通过,0分', '已通过,1分', '已通过,2分', '未审核,0分', '未审核,1分', '未审核,2分', '已废弃,0分', '已废弃,1分', '已废弃,2分', '已完结,0分', '已完结,1分', '已完结,2分', '以删除,0分', '以删除,1分', '以删除,2分']
------------end----------
['话题,0分', '话题,1分', '话题,2分', '图文,0分', '图文,1分', '图文,2分', '案例,0分', '案例,1分', '案例,2分', '文章,0分', '文章,1分', '文章,2分']
------------end----------

Process finished with exit code 0

先将字典中的key就行2个为一组的随机组合,再将该key对应的列表中情况就行随机组合。

当其中num=3的时候,字典组合只有一种情况:

/Users/dongyue/Desktop/code/venv/bin/python /Users/dongyue/Desktop/code/learn/筛选随机组合.py
['已通过,话题,0分', '已通过,话题,1分', '已通过,话题,2分', '已通过,图文,0分', '已通过,图文,1分', '已通过,图文,2分', '已通过,案例,0分', '已通过,案例,1分', '已通过,案例,2分', '已通过,文章,0分', '已通过,文章,1分', '已通过,文章,2分', '未审核,话题,0分', '未审核,话题,1分', '未审核,话题,2分', '未审核,图文,0分', '未审核,图文,1分', '未审核,图文,2分', '未审核,案例,0分', '未审核,案例,1分', '未审核,案例,2分', '未审核,文章,0分', '未审核,文章,1分', '未审核,文章,2分', '已废弃,话题,0分', '已废弃,话题,1分', '已废弃,话题,2分', '已废弃,图文,0分', '已废弃,图文,1分', '已废弃,图文,2分', '已废弃,案例,0分', '已废弃,案例,1分', '已废弃,案例,2分', '已废弃,文章,0分', '已废弃,文章,1分', '已废弃,文章,2分', '已完结,话题,0分', '已完结,话题,1分', '已完结,话题,2分', '已完结,图文,0分', '已完结,图文,1分', '已完结,图文,2分', '已完结,案例,0分', '已完结,案例,1分', '已完结,案例,2分', '已完结,文章,0分', '已完结,文章,1分', '已完结,文章,2分', '以删除,话题,0分', '以删除,话题,1分', '以删除,话题,2分', '以删除,图文,0分', '以删除,图文,1分', '以删除,图文,2分', '以删除,案例,0分', '以删除,案例,1分', '以删除,案例,2分', '以删除,文章,0分', '以删除,文章,1分', '以删除,文章,2分']
------------end----------

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/Mojitoice/article/details/103586799