您好我是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
答案 0 :(得分:2)
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'])]