is this pythonic?
pruebauno at latinmail.com
pruebauno at latinmail.com
Wed Jan 21 14:18:02 EST 2009
On Jan 21, 12:34 pm, TP <Tribulati... at Paralleles.invalid> wrote:
> alex23 wrote:
> > Try not to use 'dict' or the name of any of the other built-in types
>
> So my list is rather:
> l=[{"title":"to", "color":"blue", "value":2}
> {"title":"ti", "color":"red", "value":"coucou"}]
>
> So, I will rather use your solution:
>
> for index, record in enumerate(l):
> if record['title'] == 'ti':
> to_add_in_another_list = l.pop(index)
> another_list.append(to_add_in_another_list )
>
If you have duplicates this will not work. You will have to do
something like this instead:
>>> o=[]
>>> i=0
>>> ln=len(l)
>>> while i<ln:
if l[i]['title']=='ti':
o.append(l.pop(i))
ln-=1
else:
i+=1
If you don't have duplicates you can extract the one and exit early:
>>> for index, record in enumerate(l):
if record['title'] == 'ti':
to_add_in_another_list = l.pop(index)
break
I don't know if these are more pythonic, they should be more efficient
for longer lists though.
More information about the Python-list
mailing list