splitting one dictionary into two
Raymond Hettinger
python at rcn.com
Fri Apr 2 03:42:37 EST 2004
[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
More information about the Python-list
mailing list