Basic Nested Dictionary in a Loop

Peter Otten __peter__ at web.de
Sun Apr 2 13:02:17 EDT 2017


Ganesh Pal wrote:

> Dear Python friend
> 
> 
> I have a nested  data dictonary in the below format and I need to store
> 1000 of  entries which are in teh below format
> 
> 
>>>> X['emp_01']['salary3'] = dict(sex="f", status="single", exp="4",
> grade="A",payment="200")
>>>> X['emp_01']['salary4'] = dict(sex="f", status="single", exp="4",
> grade="A",payment="400")
>>>> X['emp_01']['salary5'] = dict(sex="f", status="single", exp="4",
> grade="A",payment="400")
> 
> 
> I only thing thats is changing is payment and I have payment_list as a
> list
> [100,200,400,500]:
> 
> 
> The value salary3 ,salary4,salary4 is to be generated in the loop . Iam
> trying to optimize the above code , by looping as shown below
> 
> 
>>>> X = {}
>>>> X['emp_01'] ={}
>>>> for salary in range(len(payment_list)):

Whenever you feel the urge to write range(len(whatever)) -- resist that 
temptation, and you'll end up with better Python code ;)

> ...     X['emp_01'][salary] =  dict(sex="f", status="single", exp="4",
> grade="A",payment=payment_list[salary])
> ...
>>>> X
> {'emp_01': {0: {'grade': 'A', 'status': 'single', 'payment': 100, 'exp':
> '4', 'sex': 'f'}, 1: {'grade': 'A', 'status': 'single', 'payment': 200,
> 'exp': '4', 'sex': 'f'}, 2: {'grade': 'A', 'status': 'single', 'payment':
> 400, 'exp': '4', 'sex': 'f'}, 3: {'grade': 'A', 'status': 'single',
> 'payment': 500, 'exp': '4', 'sex': 'f'}}}
>>>>
> 
> 
> Any other suggestion ,   Please let me know  I am on python 2.7 and Linux

Instead of artificially blowing up your database change its structure. For 
example:

X["emp_01"] = dict(
    sex="f", 
    status="single", 
    exp="4", 
    grade="A",
    payments=[100, 200, 400, 500]
)



More information about the Python-list mailing list