Search code examples
pythondictionaryappenddefaultdictdictionary-comprehension

Python Dict Comprehension to Create and Update Dictionary


I have a list of dictionaries (data) and want to convert it into dictionary (x) as below. I am using following ‘for loop’ to achieve.

data = [{'Dept': '0123', 'Name': 'Tom'},
        {'Dept': '0123', 'Name': 'Cheryl'},
        {'Dept': '0123', 'Name': 'Raj'},
        {'Dept': '0999', 'Name': 'Tina'}]
x = {}

for i in data:
    if i['Dept'] in x:
        x[i['Dept']].append(i['Name'])
    else:
        x[i['Dept']] = [i['Name']]

Output:
x -> {'0999': ['Tina'], '0123': ['Tom', 'Cheryl', 'Raj']}

Is it possible to implement the above logic in dict comprehension or any other more pythonic way?


Solution

  • The dict comprehension, even though not impossible, might not be the best choice. May I suggest using a defaultdict:

    from collections import defaultdict
    
    dic = defaultdict(list)
    for i in data:
        dic[i['Dept']].append(i['Name'])