Search code examples
pythonlistdictionary

how to convert list of dict to dict


How to convert list of dict to dict. Below is the list of dict

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

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