[BangPypers] list problem

Anand Balachandran Pillai abpillai at gmail.com
Thu Jul 22 18:06:04 CEST 2010


On Thu, Jul 22, 2010 at 7:00 PM, steve <steve at lonetwin.net> wrote:

> Hi,
>
>
> On 07/22/2010 05:02 PM, Anand Balachandran Pillai wrote:
>
>> On Thu, Jul 22, 2010 at 3:21 PM, Vikram<kpguy at rediffmail.com>  wrote:
>>
>>   Suppose you have the following list:
>>>
>>>  >>>  x =[['cat',10],['cat',20],['cat',30],['dog',5],['dog',1],['dog',3]]
>>>
>>>  My problem is that i wish to obtain the following two dictionaries:
>>>  xdictstart = {'cat':10, 'dog':1}
>>>  xdictend = {'cat':30, 'dog':5}
>>>
>>
>>
>>   Any nice way to do the above? Thanks.
>>>
>>>
>>>  Yes. Try this.
>>
>>   x =[['cat',10],['cat',20],['cat',30],['dog',5],['dog',1],['dog',3]]
>>>>>  x.sort()
>>>>>  xdictstart = dict(reversed(x))
>>>>>  xdictend = dict(x)
>>>>>  xdictstart,xdictend
>>>>>
>>>> ({'dog': 1, 'cat': 10}, {'dog': 5, 'cat': 30})
>>
>
> Are you sure that'll work ? Is creating a dict from a sequence guaranteed
> to be executed serially withing the sequence ?


Yes, it is. Since the list is sorted, the entries are entered into the
dictionary
serially (list is ordered), so hence in normal order we find the larger
value
overwrites the others and in reversed order, the smaller value.

 I cannot think of a solution which is shorter than this.


>
>
> cheers,
> - steve
> --
> random spiel: http://lonetwin.net/
> what i'm stumbling into: http://lonetwin.stumbleupon.com/
> _______________________________________________
> BangPypers mailing list
> BangPypers at python.org
> http://mail.python.org/mailman/listinfo/bangpypers
>



-- 
--Anand


More information about the BangPypers mailing list