Basic Nested Dictionary in a Loop
Steve D'Aprano
steve+python at pearwood.info
Sun Apr 2 13:05:07 EDT 2017
On Mon, 3 Apr 2017 02:13 am, 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")
Why is payment a string?
> I only thing thats is changing is payment and I have payment_list as a
> list
> [100,200,400,500]:
And here payment is an int.
> The value salary3 ,salary4,salary4 is to be generated in the loop . Iam
> trying to optimize the above code , by looping as shown below
In the above example, you have strings "salary3", "salary4", "salary5", but
in the code below, you use 0, 1, 2 instead.
Which do you intend to use?
>>>> X = {}
>>>> X['emp_01'] ={}
>>>> for salary in range(len(payment_list)):
> ... X['emp_01'][salary] = dict(sex="f", status="single", exp="4",
> grade="A",payment=payment_list[salary])
You should almost never need to write `range(len(payment_list))`.
payment_list = [100, 200, 400, 500]
employees = {}
employees['emp_01'] = {}
for salary, payment in enumerate(payment_list, 3):
# I don't know why salary starts at 3 instead of 1 or 0.
salary = 'salary' + str(salary)
employees['emp_01'][salary] = dict(
sex="f", status="single", exp="4", grade="A", payment=payment
)
from pprint import pprint
pprint(employees)
{'emp_01': {'salary3': {'exp': '4',
'grade': 'A',
'payment': 100,
'sex': 'f',
'status': 'single'},
'salary4': {'exp': '4',
'grade': 'A',
'payment': 200,
'sex': 'f',
'status': 'single'},
'salary5': {'exp': '4',
'grade': 'A',
'payment': 400,
'sex': 'f',
'status': 'single'},
'salary6': {'exp': '4',
'grade': 'A',
'payment': 500,
'sex': 'f',
'status': 'single'}}}
--
Steve
“Cheer up,” they said, “things could be worse.” So I cheered up, and sure
enough, things got worse.
More information about the Python-list
mailing list