Home > Back-end >  how can I create a nested dictionary with list of dictionaries
how can I create a nested dictionary with list of dictionaries

Time:11-02

I have below list of dictionary:

 [{'first': '0', 'last': 'hg', 'pay': '0', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '195', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '1', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '344', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '4', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '6', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '5', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '7', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '8', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '9', 'hossain': '{}'}]

and I want convert it to a nested dictionary with key's 'pay':

 {'0':{'first': '0', 'last': 'hg',  'hossain': '{}'},
 '195':{'first': '0', 'last': 'hg', 'hossain': '{}'},
 '1':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '344':{'first': '0', 'last': 'hg', 'hossain': '{}'},
 '4':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '6':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '5':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '7':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '8':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '9':{'first': '0', 'last': 'hg',   'hossain': '{}'}}

I need a fast way to convert it thank you for help

CodePudding user response:

You have below methods for doing this:

Method 1: Using for loop


data =  [{'first': '0', 'last': 'hg', 'pay': '0', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '195', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '1', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '344', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '4', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '6', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '5', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '7', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '8', 'hossain': '{}'},
 {'first': '0', 'last': 'hg', 'pay': '9', 'hossain': '{}'}]

dictionary_of_pays = {}
 
# for loop to convert a list of dict
# to dict of list
for item in data:
    key = item['pay']
    item.pop('pay')
    dictionary_of_pays[key] = item
 
# display
print(dictionary_of_pays)

output:

 {'0':{'first': '0', 'last': 'hg',  'hossain': '{}'},
 '195':{'first': '0', 'last': 'hg', 'hossain': '{}'},
 '1':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '344':{'first': '0', 'last': 'hg', 'hossain': '{}'},
 '4':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '6':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '5':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '7':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '8':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '9':{'first': '0', 'last': 'hg',   'hossain': '{}'}}

Method 2: Using dictionary comprehension

dictionary_of_pays = {item['pay']:{k:item[k] for k in item if k != 'pay'} for item in data}


print(dictionary_of_pays)

output:

 {'0':{'first': '0', 'last': 'hg',  'hossain': '{}'},
 '195':{'first': '0', 'last': 'hg', 'hossain': '{}'},
 '1':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '344':{'first': '0', 'last': 'hg', 'hossain': '{}'},
 '4':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '6':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '5':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '7':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '8':{'first': '0', 'last': 'hg',   'hossain': '{}'},
 '9':{'first': '0', 'last': 'hg',   'hossain': '{}'}}
  • Related