+ 2
Hi ! What will be the output if this code 2 or 4 ? please provide a few explainantion.
d = {k:v for k, v in['a1','b2']} d['a1'] = 1 d['b2'] = 2 print(len(d))
10 Réponses
+ 5
the first line is a dictionary comprehension
it is the same as:
d = {}
for k,v in ['a1','b2']:
d.update({k:v})
k, v in this case will unpack each string in the list.
for the first item in the list:
k, v = 'a1'
k='a'
v='1'
for the second item in the list:
k, v = 'b2'
k = 'b'
v = '2'
so initially d would become
d = {'a':'1', 'b':'2'}
but then you add these values:
d['a1'] = 1
d['b2'] = 2
so d becomes:
d = {'a':'1', 'b':'2', 'a1':1, 'b2':2}
so what is len(d) ?
+ 5
Youness
This code declares the variable d as a dictionary and uses a loop to assign string values from a list consisting of two strings of two characters each.
The result is a dictionary of two keys a and b with values 1 and 2.
Then the dictionary d is supplemented with two more keys a1 and b2.
As a result, the dictionary consists of four keys.
Answer: 4.
#d = {k:v for k, v in['a1','b2']}
d = {}
for k, v in ['a1','b2']:
d[k] = v
d['a1'] = 1
d['b2'] = 2
print(len(d), d)
I hope the code is clearer for you in this format.
A question for reflection:
Why didn't I assign values the way it is written in the first case?
for k, v in ['a1','b2']:
d = {k:v}
+ 3
Have you run the code in the code playground? That might help.
+ 3
Bob_Li while I was translating my answer into English, you beat me to it.
If I had seen your answer, I wouldn't have wasted time explaining myself...😎
+ 3
Bob_Li oh no, I did not see this error in you, because when I wrote my answer I did not see your answer. I addressed this question to the author of the discussion, I only suggested that difficulties might arise when rewriting the teral expression...😎
+ 2
Solo
you're right...😅
it should be d[k]=v
for k,v in ['a1','b2']:
d = {k:v}
is wrong.
it would just overwrite d at each iteration and you would just get
d = {'b':'2'}
in the end.🤪
I updated my answer with another method that can use {k:v} though...
because there must be an equivalent method to why k:v works in the dictionary comprehension. 😅
+ 2
Solo
but my solution was initially wrong. I did not test it. my bad. You did great pointing out the mistake.👍
0
The output of the code will be:
2
The dictionary `d` is initialized using a dictionary comprehension with the key-value pairs ['a1', 'b2']. However, it is important to note that ['a1', 'b2'] is treated as an iterable of characters, not key-value pairs. Therefore, the resulting `d` dictionary will have two keys, 'a' and 'b', with corresponding values '1' and '2' respectively.
When `len(d)` is called, it returns the number of key-value pairs in the dictionary, which is 2.
0
Vashu Chaudhary but how about the two additional items added afterwards? That would make the len = 4
0
The two additional items mentioned in your question are not actually added to the dictionary because the dictionary comprehension only iterates over the existing items in the list, which are `'a1'` and `'b2'`.