[SOLVED]Why are the loop variables for k and v used in a loop to update a dictionary still defined outside the loop?(Python) | Sololearn: Learn to code for FREE!
Novo curso! Todo programador deveria aprender IA generativa!
Experimente uma aula grƔtis
0

[SOLVED]Why are the loop variables for k and v used in a loop to update a dictionary still defined outside the loop?(Python)

Hi there. I bumped into a code in DataCamp when I googled stg about nested dict comprehensions, and they put the -almost- equivalent for loop for the comprehension there, too. So, given nested_dict = {'first': {'a': 1}, 'second': {'b': 2}} To turn this into a dictionary with the numbers converted to floats, they did: for (outer_k, outer_v) in nested_dict.items(): for (inner_k, inner_v) in outer_v.items(): outer_v.update({inner_k: float(inner_v)}) nested_dict.update({outer_k: outer_v}) # THIS print(nested_dict) which then outputs the desired result. Now the line I marked with "THIS" is what bewilders me. How come loop vars can exist outside the loop? I'm sorry if this is sounding stupid, I had to take a break from python for some time. Lesson learned. But still, it feels as though this is something new to me. Is this due to update()? Thank you. https://code.sololearn.com/crDb301kPSS6/?ref=app

15th Nov 2022, 8:45 PM
KorkunƧ el Gato
KorkunƧ el Gato - avatar
4 Respostas
+ 6
Hi, KorkunƧ el Gato ! When it comes to variables, you just follow the LEGB-rules. If you try to reach a variable in the same name space, you will reach it - otherwise not. LEGB is an acronym LEGB for Local, Enclosing, Global, and Builtin scopes. A function is an encloser, a loop or a dictionary is not. Variables in comprenhsion becomes a special case, and so does variables in exceptions. So iteration variables whitin comprehentions becomes local, and canā€™t be reach outside the comprehension (in Python 3.x). So for example, you can reach built-ins (B) everywhere, but not local (L) variables.
15th Nov 2022, 11:04 PM
Per Bratthammar
Per Bratthammar - avatar
+ 2
Thanks a bunch, Per B.
15th Nov 2022, 11:24 PM
KorkunƧ el Gato
KorkunƧ el Gato - avatar
+ 1
By the way, this line is not needed here šŸ˜‰
15th Nov 2022, 11:34 PM
Solo
Solo - avatar
+ 1
Solo Because dicts are mutable, right, it's updated inside anyway. Yeah actually that was some other question that was boggling me but I forgot to ask about it. So I hit jackpot here now, thanks šŸ˜Š The comprehension they did is different than their own loop btw(So I didn't include it in my q). A bit of lack of care there on their part.
15th Nov 2022, 11:48 PM
KorkunƧ el Gato
KorkunƧ el Gato - avatar