Home > OS >  Dictionary where values are dictionaries not updating [duplicate]
Dictionary where values are dictionaries not updating [duplicate]

Time:09-28

I want to create a dictionary where each value is a dictionary. Here's what I have:

start = 1
for i in range(3):
    updated_payload = payload
    updated_payload["params"]["dsoJsonData"]["ReadMap"]["Some"]["StartIndex"] = start
    x[i] = updated_payload
    start = start   1

Where payload is also a dictionary with all the needed attributes. I am just changing the StartIndex attribute to whatever the loop is at that time. However, when I run this piece of code all my dictionaries' keys have the same exact values. StartIndex all equal to 3. Why are they all getting the same value and how can I fix it so that it gets its respective iteration number?

CodePudding user response:

This is because you're referencing those dicts rather than copying them. So all of your x[i]'s are pointing the same dict. You should be copying them as the following:

x[i] = updated_payload.copy()

CodePudding user response:

I think you need to make a copy of the payload dictionary. You are directly assigning the value of payload to updated_payload so it's passed by reference instead of being copied.

updated_payload = payload.copy()
  • Related