Update a node of nested data structure in python
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
|
show 1 more comment
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
Your code should work. There's nothing here that makes a copy of anything. You can also writeplayer['metadata']['level'] += 10
– Barmar
Nov 20 '18 at 18:06
players[player]won't work becauseplayeris the value of the element, not its index.
– Barmar
Nov 20 '18 at 18:07
@Barmar you mean after I doplayer['metadata']['level'] = player_levelif Iprint(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 setplayer_idbefore this.
– Barmar
Nov 20 '18 at 18:09
That should beplayer_id = player['player_id']
– Barmar
Nov 20 '18 at 18:10
|
show 1 more comment
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
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
python data-structures
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 writeplayer['metadata']['level'] += 10
– Barmar
Nov 20 '18 at 18:06
players[player]won't work becauseplayeris the value of the element, not its index.
– Barmar
Nov 20 '18 at 18:07
@Barmar you mean after I doplayer['metadata']['level'] = player_levelif Iprint(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 setplayer_idbefore this.
– Barmar
Nov 20 '18 at 18:09
That should beplayer_id = player['player_id']
– Barmar
Nov 20 '18 at 18:10
|
show 1 more comment
Your code should work. There's nothing here that makes a copy of anything. You can also writeplayer['metadata']['level'] += 10
– Barmar
Nov 20 '18 at 18:06
players[player]won't work becauseplayeris the value of the element, not its index.
– Barmar
Nov 20 '18 at 18:07
@Barmar you mean after I doplayer['metadata']['level'] = player_levelif Iprint(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 setplayer_idbefore this.
– Barmar
Nov 20 '18 at 18:09
That should beplayer_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
|
show 1 more comment
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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 becauseplayeris 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_levelif Iprint(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 setplayer_idbefore this.– Barmar
Nov 20 '18 at 18:09
That should be
player_id = player['player_id']– Barmar
Nov 20 '18 at 18:10