pythonlistdictionary

How do I convert a list of dicts to a dict?


How can I convert a list of dicts to a dict? Below is the list of dicts:

data = [{'name': 'John Doe', 'age': 37, 'sex': 'M'},
        {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}]

I want to convert this to:

data = {'John Doe': {'name': 'John Doe', 'age': 37, 'sex': 'M'},
        'Lisa Simpson': {'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
        'Bill Clinton': {'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}

Solution

  • A possible solution using names as the new keys:

    new_dict = {}
    for item in data:
       name = item['name']
       new_dict[name] = item
    

    With Python 3.x you can also use dict comprehensions for the same approach in a more nice way:

    new_dict = {item['name']:item for item in data}
    

    As suggested in a comment by Paul McGuire, if you don't want the name in the inner dict, you can do:

    new_dict = {}
    for item in data:
       name = item.pop('name')
       new_dict[name] = item