[BangPypers] Generate Dynamic lists

Dhananjay Nene dhananjay.nene at gmail.com
Mon Nov 7 00:47:44 CET 2011


On Mon, Nov 7, 2011 at 5:11 AM, Dhananjay Nene <dhananjay.nene at gmail.com>wrote:

>
>
> On Fri, Oct 21, 2011 at 12:10 AM, Asif Jamadar <asif.jamadar at rezayat.net>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


More information about the BangPypers mailing list