On Mon, Nov 7, 2011 at 5:11 AM, Dhananjay Nene <[email protected]>wrote:
> > > On Fri, Oct 21, 2011 at 12:10 AM, Asif Jamadar > <[email protected]>wrote: > >> So I'm trying to generate dynamic choices for django form. Here i'm usig >> formset concept (CODE is mentioned below) >> >> >> >> Suppose i have list called criteria_list = ['education', 'know how', >> 'managerial', 'interpersonal', ] >> >> >> >> now i need to generate choices as follows >> >> >> >> list1 = [('education', 1), ('education', 2), ('education', 3), >> (''education' , 4) , ('know how', 1) ('know ho', 2), ('know ho', 3), ('know >> ho', 4)] >> >> >> >> list2 = [('education', 1), ('education', 2), ('education', 3), >> (''education' , 4) , ('managerial', 1) ('managerial', 2), ('managerial', >> 3), ('managerial', 4)] >> >> >> >> list3 = [('education', 1), ('education', 2), ('education', 3), >> (''education' , 4) , ('interpersonal', 1) ('interpersonal', 2), >> ('interpersonal', 3), ('interpersonal', 4)] >> >> >> >> list4 = [('know how', 1), ('know how', 2), ('know how ', 3), ('know how' >> , 4) , ('managerial', 1) ('managerial', 2), ('managerial', 3), >> ('managerial', 4)] >> >> >> >> list5 = [('know how', 1), ('know how', 2), ('know how ', 3), ('know how' >> , 4) , ('interpersonal', 1) ('interpersonal', 2), ('interpersonal', 3), >> ('interpersonal', 4)] >> >> >> >> list6= [('managerial', 1), ('managerial', 2), ('managerial ', 3), >> ('managerial' , 4) , ('interpersonal', 1) ('interpersonal', 2), >> ('interpersonal', 3), ('interpersonal', 4)] >> >> >> >> >> >> How can i achive this in python? >> >> You could just create a list of lists using either of the following > approaches > > import itertools as it > > > criteria_list = ['education', 'know how', 'managerial', 'interpersonal', ] > > pairs = list((first,second) for (first,second) in > (it.combinations(criteria_list,2))) > lists = list(list((elem,r+1) for elem in pair for r in range(4)) for pair > in pairs) > print lists > > lists2 = map(lambda (x,y): map(lambda (r,v): (v,r+1), > it.chain(enumerate(it.repeat(x,4)),enumerate(it.repeat(y,4)))), > it.combinations(criteria_list,2)) > print lists2 > > > The first comprehension above (pairs) had redundant building of the first,second tuple. You could just simplify it as follows : import itertools as it criteria_list = ['education', 'know how', 'managerial', 'interpersonal', ] lists = list(list((elem,r+1) for elem in pair for r in range(4)) for pair in (it.combinations(criteria_list,2))) print lists lists2 = map(lambda (x,y): map(lambda (r,v): (v,r+1), it.chain(enumerate(it.repeat(x,4)),enumerate(it.repeat(y,4)))), it.combinations(criteria_list,2)) print lists2 _______________________________________________ BangPypers mailing list [email protected] http://mail.python.org/mailman/listinfo/bangpypers
