I have a dict
:
dictionary = {'1': 'a', '2': 'a', '3': 'b', '4': 'b'}
and I want to split it such that one dict
contains all items with value == 'a'
and the other one all items with value == 'b'
:
dict_a = {'1': 'a', '2': 'a'} dict_b = {'3': 'b', '4': 'b'}
How can I do this in an short way? My approach
dict_a = {} dict_b = {} for key, value in dictionary.items(): if value == 'a': dict_a = dict(key, value) else: dict_b = dict(key, value)
does not work.
Advertisement
Answer
Try this instead:
dict_a={} dict_b={} for key, value in dictionary.items(): if value == 'a': dict_a[key] = value else: dict_b[key] = value
In your original code, you were recreating dict_a
or dict_b
every time you went through the loop.
If you’re not absolutely sure that your starting dict contains ONLY "a"
or "b"
values, use this instead:
dict_a={} dict_b={} for key, value in dictionary.items(): if value == 'a': dict_a[key] = value elif value == 'b': dict_b[key] = value else: pass