Ok, lets say I have a string
str = "main,sub,sub_sub"
how could I use that to edit the value inside the dict
dicx = {'main':{'sub':{'sub_sub':'value to change'}}}
Ok, lets say I have a string
str = "main,sub,sub_sub"
how could I use that to edit the value inside the dict
dicx = {'main':{'sub':{'sub_sub':'value to change'}}}
here's a hint
>>>s = "main,sub,sub_sub"
>>>newS = s.split( "," )
>>>newS
[ "main", "sub", "sub_sub" ]
>>>d = { "key":"value" }
>>>d[ "key" ]
"value"
hope this helps :)
That gives me
[ "main", "sub", "sub_sub" ]
but to access sub_sub I need
["main"]["sub"]["sub_sub"]
Here's what I've come up with:
strIds = "main,sub,sub_sub"
dicx = {'main':{'sub':{'sub_sub':'to edit'}}}
str = dicx
for el in strIds.split(","):
str = str[el]
print(str)
Anything quicker/better looking?
Here's what I don't understand about python:
strIds = "main,sub,sub_sub"
dicx = {'main':{'sub':{'sub_sub':'to edit'}}}
print(dicx)
str = dicx
for el in strIds.split(","):
if not el == 'sub_sub':
str = str[el]
str[el] = "foo"
print(dicx)
Outputs:
{'main': {'sub': {'sub_sub': 'to edit'}}}
{'main': {'sub': {'sub_sub': 'foo'}}}
but not this is somehow different when I'm not assigning to array:
strIds = "main,sub,sub_sub"
dicx = {'main':{'sub':{'sub_sub':'to edit'}}}
print(dicx)
str = dicx
for el in strIds.split(","):
str = str[el]
str = "foo"
print(dicx)
Outputs:
{'main': {'sub': {'sub_sub': 'to edit'}}}
{'main': {'sub': {'sub_sub': 'to edit'}}}
dicx remains unchanged in the second scenario. Any ideas?
Here's what I've come up with:
strIds = "main,sub,sub_sub" dicx = {'main':{'sub':{'sub_sub':'to edit'}}} str = dicx for el in strIds.split(","): str = str[el] print(str)
Anything quicker/better looking?
well you could do it this way also:
strIds = "main,sub,sub_sub"
dicx = {'main':{'sub':{'sub_sub':'to edit'}}}
strIds = strIds.split( "," )
print dicx[ strIds[ 0 ] ][ strIds[ 1 ] ][ strIds[ 2 ] ]
it's shorter but not that effective. I prefer your way, i.e. with the for loop :)
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.