Update a node of nested data structure in python












0















I am very new to python. I am having trouble updating a python data structure and would very much appreciate some help with the same. Heres my problem:



I have a structure like below:



"players": [
{
"metadata": {
"level": 11,
"guild": "wizard",
"kingdom" : "westonia"
},
"player_id": 34333
},
{
"metadata": {
"level": 11,
"guild": "warrior",
"kingdom": "Glorianth"
},
"player_id": 197456
},
...etc...
]


Now, I want to loop and update some of these player nodes based on a condition. So I do:



for player in players:
player_id = player[player_id]
if has_level_bonus(player_id):
player_level = player['metadata']['level']
player_level = player_level + 10
player['metadata']['level'] = player_level


This updates the player_level correctly, but only inside the extracted "player" node. My problem is how do I "put" this updated value back into the "players" structure?



I tried players[player]['metadata']['level'] = player_level but it give me error. I am new to python so I am unable to wrap my head around with. Any help is much appreciated.










share|improve this question























  • Your code should work. There's nothing here that makes a copy of anything. You can also write player['metadata']['level'] += 10

    – Barmar
    Nov 20 '18 at 18:06











  • players[player] won't work because player is the value of the element, not its index.

    – Barmar
    Nov 20 '18 at 18:07











  • @Barmar you mean after I do player['metadata']['level'] = player_level if I print(players) I should see the node updated with new value?

    – Undefined Variable
    Nov 20 '18 at 18:08











  • player_id = player[player_id] what is this supposed to mean? You haven't set player_id before this.

    – Barmar
    Nov 20 '18 at 18:09











  • That should be player_id = player['player_id']

    – Barmar
    Nov 20 '18 at 18:10
















0















I am very new to python. I am having trouble updating a python data structure and would very much appreciate some help with the same. Heres my problem:



I have a structure like below:



"players": [
{
"metadata": {
"level": 11,
"guild": "wizard",
"kingdom" : "westonia"
},
"player_id": 34333
},
{
"metadata": {
"level": 11,
"guild": "warrior",
"kingdom": "Glorianth"
},
"player_id": 197456
},
...etc...
]


Now, I want to loop and update some of these player nodes based on a condition. So I do:



for player in players:
player_id = player[player_id]
if has_level_bonus(player_id):
player_level = player['metadata']['level']
player_level = player_level + 10
player['metadata']['level'] = player_level


This updates the player_level correctly, but only inside the extracted "player" node. My problem is how do I "put" this updated value back into the "players" structure?



I tried players[player]['metadata']['level'] = player_level but it give me error. I am new to python so I am unable to wrap my head around with. Any help is much appreciated.










share|improve this question























  • Your code should work. There's nothing here that makes a copy of anything. You can also write player['metadata']['level'] += 10

    – Barmar
    Nov 20 '18 at 18:06











  • players[player] won't work because player is the value of the element, not its index.

    – Barmar
    Nov 20 '18 at 18:07











  • @Barmar you mean after I do player['metadata']['level'] = player_level if I print(players) I should see the node updated with new value?

    – Undefined Variable
    Nov 20 '18 at 18:08











  • player_id = player[player_id] what is this supposed to mean? You haven't set player_id before this.

    – Barmar
    Nov 20 '18 at 18:09











  • That should be player_id = player['player_id']

    – Barmar
    Nov 20 '18 at 18:10














0












0








0








I am very new to python. I am having trouble updating a python data structure and would very much appreciate some help with the same. Heres my problem:



I have a structure like below:



"players": [
{
"metadata": {
"level": 11,
"guild": "wizard",
"kingdom" : "westonia"
},
"player_id": 34333
},
{
"metadata": {
"level": 11,
"guild": "warrior",
"kingdom": "Glorianth"
},
"player_id": 197456
},
...etc...
]


Now, I want to loop and update some of these player nodes based on a condition. So I do:



for player in players:
player_id = player[player_id]
if has_level_bonus(player_id):
player_level = player['metadata']['level']
player_level = player_level + 10
player['metadata']['level'] = player_level


This updates the player_level correctly, but only inside the extracted "player" node. My problem is how do I "put" this updated value back into the "players" structure?



I tried players[player]['metadata']['level'] = player_level but it give me error. I am new to python so I am unable to wrap my head around with. Any help is much appreciated.










share|improve this question














I am very new to python. I am having trouble updating a python data structure and would very much appreciate some help with the same. Heres my problem:



I have a structure like below:



"players": [
{
"metadata": {
"level": 11,
"guild": "wizard",
"kingdom" : "westonia"
},
"player_id": 34333
},
{
"metadata": {
"level": 11,
"guild": "warrior",
"kingdom": "Glorianth"
},
"player_id": 197456
},
...etc...
]


Now, I want to loop and update some of these player nodes based on a condition. So I do:



for player in players:
player_id = player[player_id]
if has_level_bonus(player_id):
player_level = player['metadata']['level']
player_level = player_level + 10
player['metadata']['level'] = player_level


This updates the player_level correctly, but only inside the extracted "player" node. My problem is how do I "put" this updated value back into the "players" structure?



I tried players[player]['metadata']['level'] = player_level but it give me error. I am new to python so I am unable to wrap my head around with. Any help is much appreciated.







python data-structures






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 20 '18 at 18:03









Undefined VariableUndefined Variable

1,64732748




1,64732748













  • Your code should work. There's nothing here that makes a copy of anything. You can also write player['metadata']['level'] += 10

    – Barmar
    Nov 20 '18 at 18:06











  • players[player] won't work because player is the value of the element, not its index.

    – Barmar
    Nov 20 '18 at 18:07











  • @Barmar you mean after I do player['metadata']['level'] = player_level if I print(players) I should see the node updated with new value?

    – Undefined Variable
    Nov 20 '18 at 18:08











  • player_id = player[player_id] what is this supposed to mean? You haven't set player_id before this.

    – Barmar
    Nov 20 '18 at 18:09











  • That should be player_id = player['player_id']

    – Barmar
    Nov 20 '18 at 18:10



















  • Your code should work. There's nothing here that makes a copy of anything. You can also write player['metadata']['level'] += 10

    – Barmar
    Nov 20 '18 at 18:06











  • players[player] won't work because player is the value of the element, not its index.

    – Barmar
    Nov 20 '18 at 18:07











  • @Barmar you mean after I do player['metadata']['level'] = player_level if I print(players) I should see the node updated with new value?

    – Undefined Variable
    Nov 20 '18 at 18:08











  • player_id = player[player_id] what is this supposed to mean? You haven't set player_id before this.

    – Barmar
    Nov 20 '18 at 18:09











  • That should be player_id = player['player_id']

    – Barmar
    Nov 20 '18 at 18:10

















Your code should work. There's nothing here that makes a copy of anything. You can also write player['metadata']['level'] += 10

– Barmar
Nov 20 '18 at 18:06





Your code should work. There's nothing here that makes a copy of anything. You can also write player['metadata']['level'] += 10

– Barmar
Nov 20 '18 at 18:06













players[player] won't work because player is the value of the element, not its index.

– Barmar
Nov 20 '18 at 18:07





players[player] won't work because player is the value of the element, not its index.

– Barmar
Nov 20 '18 at 18:07













@Barmar you mean after I do player['metadata']['level'] = player_level if I print(players) I should see the node updated with new value?

– Undefined Variable
Nov 20 '18 at 18:08





@Barmar you mean after I do player['metadata']['level'] = player_level if I print(players) I should see the node updated with new value?

– Undefined Variable
Nov 20 '18 at 18:08













player_id = player[player_id] what is this supposed to mean? You haven't set player_id before this.

– Barmar
Nov 20 '18 at 18:09





player_id = player[player_id] what is this supposed to mean? You haven't set player_id before this.

– Barmar
Nov 20 '18 at 18:09













That should be player_id = player['player_id']

– Barmar
Nov 20 '18 at 18:10





That should be player_id = player['player_id']

– Barmar
Nov 20 '18 at 18:10












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398923%2fupdate-a-node-of-nested-data-structure-in-python%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398923%2fupdate-a-node-of-nested-data-structure-in-python%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to pass form data using jquery Ajax to insert data in database?

National Museum of Racing and Hall of Fame

Accessing nested JavaScript objects with string key