Issue
I have an existing dictionary in Python that is formatted as follows, the length and values can change when the code is ran though.
{'1': 'Dog',
'2': 'Dog',
'3': 'Cat',
'4': 'Dog',
'5': 'Cat',
'6': 'Cat',
'7': 'Dog',
'8': 'Dog',
'9': 'Rabbit',
'10': 'Dog',
'11': 'Cat'}
I want to reformat it so it is as follows
{
"Dog" : ['1', '2', '4', '7', '8', 10],
"Cat" : ['3', '5', '6', '11'],
"Rabbit" : ['9']
}
I am struggling to come up with a for loop that can loop through the existing dict and create the new one.
Solution
You can use collections.defaultdict
or dict.setdefault
and insert element in list.
from collections import defaultdict
dct = defaultdict(list)
dct_2 = {}
inp = {'1': 'Dog','2': 'Dog','3': 'Cat','4': 'Dog',
'5': 'Cat','6': 'Cat','7': 'Dog','8': 'Dog',
'9': 'Rabbit','10': 'Dog','11': 'Cat'}
for k,v in inp.items():
dct[v].append(k)
dct_2.setdefault(v, []).append(k)
print(dct)
print(dct_2)
Output:
# dct
defaultdict(<class 'list'>, {'Dog': ['1', '2', '4', '7', '8', '10'], 'Cat': ['3', '5', '6', '11'], 'Rabbit': ['9']})
# dct_2
{'Dog': ['1', '2', '4', '7', '8', '10'], 'Cat': ['3', '5', '6', '11'], 'Rabbit': ['9']}
Answered By - I'mahdi
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.