拆分列表的python列表

2024-05-16 02:53:40 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我是python的新手 我有一张单子

data = [['shop_id', '=', 1],
        ['product_id', '=', 16], ['product_id', '=', 8], ['product_id', '=', 4], ['product_id', '=', 6],
        ['so', '=', 1],['so', '=', 2],
        ['state', '=', u'draft']
       ]

我想要一个像这样的输出

out_put = [[['shop_id', '=', 1]],
           [['shop_id', '=', 1],['product_id', '=', 16]],
           [['shop_id', '=', 1],['product_id', '=', 8]],
           [['shop_id', '=', 1],['product_id', '=', 4]],
           [['shop_id', '=', 1],['product_id', '=', 6]],
           [['shop_id', '=', 1],['product_id', '=', 16],['so', '=', 1]],
           [['shop_id', '=', 1],['product_id', '=', 8],['so', '=', 1]],
           [['shop_id', '=', 1],['product_id', '=', 4],['so', '=', 1]],
           [['shop_id', '=', 1],['product_id', '=', 6],['so', '=', 1]],
           [['shop_id', '=', 1],['product_id', '=', 16],['so', '=', 2]],
           [['shop_id', '=', 1],['product_id', '=', 8],['so', '=', 2]],
           [['shop_id', '=', 1],['product_id', '=', 4],['so', '=', 2]],
           [['shop_id', '=', 1],['product_id', '=', 6],['so', '=', 2]],
           [['shop_id', '=', 1],['product_id', '=', 16],['so', '=', 1],['state', '=', u'draft']],
           [['shop_id', '=', 1],['product_id', '=', 8],['so', '=', 1],['state', '=', u'draft']],
           [['shop_id', '=', 1],['product_id', '=', 4],['so', '=', 1],['state', '=', u'draft']],
           [['shop_id', '=', 1],['product_id', '=', 6],['so', '=', 1],['state', '=', u'draft']],
           [['shop_id', '=', 1],['product_id', '=', 16],['so', '=', 2],['state', '=', u'draft']],
           [['shop_id', '=', 1],['product_id', '=', 8],['so', '=', 2],['state', '=', u'draft']],
           [['shop_id', '=', 1],['product_id', '=', 4],['so', '=', 2],['state', '=', u'draft']],
           [['shop_id', '=', 1],['product_id', '=', 6],['so', '=', 2],['state', '=', u'draft']],
           ]

我试过几种方法,但找不到合适的解决方案你知道吗

for domain in data:
    if domain[0] not in temp:
        final_dom.append(domain)
        print "final_dom :::",final_dom
        temp.append(domain[0])
    else:
        print "adsada"
        final_dom.pop()
        final_dom.append(domain)
        print "final_dom :::",final_dom

Tags: iniddatasodomainproductshoptemp
1条回答
网友
1楼 · 发布于 2024-05-16 02:53:40
from itertools import groupby, product
from operator import itemgetter

groups = [list(g) for _,g in groupby(data,key=itemgetter(0))]
for i in range(1,len(groups)+1):
    print list(product(*groups[:i]))

输出:

[(['shop_id', '=', 1],)]
[(['shop_id', '=', 1], ['product_id', '=', 16]),
 (['shop_id', '=', 1], ['product_id', '=', 8]), 
 (['shop_id', '=', 1], ['product_id', '=', 4]), 
 (['shop_id', '=', 1], ['product_id', '=', 6])]
[(['shop_id', '=', 1], ['product_id', '=', 16], ['so', '=', 1]), 
 (['shop_id', '=', 1], ['product_id', '=', 16], ['so', '=', 2]),
 (['shop_id', '=', 1], ['product_id', '=', 8], ['so', '=', 1]), 
 (['shop_id', '=', 1], ['product_id', '=', 8], ['so', '=', 2]), 
 (['shop_id', '=', 1], ['product_id', '=', 4], ['so', '=', 1]), 
 (['shop_id', '=', 1], ['product_id', '=', 4], ['so', '=', 2]),
 (['shop_id', '=', 1], ['product_id', '=', 6], ['so', '=', 1]),
 (['shop_id', '=', 1], ['product_id', '=', 6], ['so', '=', 2])]
[(['shop_id', '=', 1], ['product_id', '=', 16], ['so', '=', 1], ['state', '=', u'draft']),
 (['shop_id', '=', 1], ['product_id', '=', 16], ['so', '=', 2], ['state', '=', u'draft']), 
 (['shop_id', '=', 1], ['product_id', '=', 8], ['so', '=', 1], ['state', '=', u'draft']), 
 (['shop_id', '=', 1], ['product_id', '=', 8], ['so', '=', 2], ['state', '=', u'draft']), 
 (['shop_id', '=', 1], ['product_id', '=', 4], ['so', '=', 1], ['state', '=', u'draft']), 
 (['shop_id', '=', 1], ['product_id', '=', 4], ['so', '=', 2], ['state', '=', u'draft']),
 (['shop_id', '=', 1], ['product_id', '=', 6], ['so', '=', 1], ['state', '=', u'draft']),
 (['shop_id', '=', 1], ['product_id', '=', 6], ['so', '=', 2], ['state', '=', u'draft'])]

相关问题 更多 >