splitting one dictionary into two
wes weston
wweston at att.net
Fri Apr 2 10:31:17 EST 2004
Raymond Hettinger wrote:
> [jsaul]
>
>>I have to split a dict into two dicts. Depending on their values,
>>the items shall remain in the original dict or be moved to another
>>one and at the same time be removed from the original dict.
>>
>>OK, this is how I do it right now:
>>
>> dict1 = { "a":1, "b":3, "c":5, "d":4, "e":2 }
>> dict2 = {}
>> klist = []
>>
>> for key in dict1:
>> if dict1[key] > 3: # some criterion
>> dict2[key] = dict1[key]
>> klist.append(key)
>>
>> for key in klist:
>> del dict1[key]
>>
>> print dict1
>> print dict2
>>
>>That means that I store the keys of the items to be removed from
>>the original dict in a list (klist) and subsequently remove the
>>items using these keys.
>>
>>Is there an "even more pythonic" way?
>
>
> Your way seems clean enough to me.
>
> One other approach is to use items() so you can modify dict1 as you go:
>
> for key, value in dict1.items():
> if value > 3:
> dict2[key] = value
> del dict1[key]
>
>
>
> Raymond Hettinger
Raymond,
I had the same approach seen above before the
originator added the fact that the starting
dictionaries would typically be "huge". Robert
Brewer timed this method as 5 times slower than
his method which showed me that my obsession with
simplicity needs to be looked at.
wes
More information about the Python-list
mailing list