Reputation: 203
I want to add new data in the existing dictionary. I tried using update but it is not working for me. What to do?
Code:
comp_data = {}
temp = form.competition.data
print('\nTemp: ', temp)
for i in temp:
print('i : ', i)
comp_data.update(i)
print("\n\nComp Data : ", comp_data)
Output:
Temp: [{'question': 'q1', 'option1': 'q1', 'option2': 'q1', 'option3': 'q1', 'answer': 'q1'}, {'question': 'q2', 'option1': 'q2', 'option2': 'q2', 'option3': 'q2', 'answer': 'q2'}]
i : {'question': 'q1', 'option1': 'q1', 'option2': 'q1', 'option3': 'q1', 'answer': 'q1'}
i : {'question': 'q2', 'option1': 'q2', 'option2': 'q2', 'option3': 'q2', 'answer': 'q2'}
Comp Data : {'question': 'q2', 'option1': 'q2', 'option2': 'q2', 'option3': 'q2', 'answer': 'q2'}
The output i want is like this:
Comp Data : {{'question': 'q1', 'option1': 'q1', 'option2': 'q1', 'option3': 'q1', 'answer': 'q1'}, {'question': 'q2', 'option1': 'q2', 'option2': 'q2', 'option3': 'q2', 'answer': 'q2'}}
Upvotes: 0
Views: 124
Reputation: 15561
Perhaps you want
comp_data = []
temp = form.competition.data
print('\nTemp: ', temp)
for i in temp:
print('i : ', i)
comp_data.append(i)
print("\n\nComp Data : ", comp_data)
which gives you a replica of temp
(a list).
Or
comp_data = {}
temp = form.competition.data
print('\nTemp: ', temp)
ik = 0
for i in temp:
print('i : ', i)
ik++
comp_data.update({ik: i})
print("\n\nComp Data : ", comp_data)
which gives you a dict.
Upvotes: 0
Reputation: 341
If by that you want to update an existing key then you can simply use
d['i'] = [1,"something"]
see This for more info
but if what you mean is that you want to add a new key to existing dictionary then There is no explicitly defined method to add a new key to the dictionary. If you want to add a new key to the dictionary, then you can use assignment operator with dictionary key.
see This linkfor more info.
Upvotes: 0
Reputation: 5032
You already have your desired output in temp
Temp: [{'question': 'q1', 'option1': 'q1', 'option2': 'q1', 'option3': 'q1', 'answer': 'q1'}, {'question': 'q2', 'option1': 'q2', 'option2': 'q2', 'option3': 'q2', 'answer': 'q2'}]
Comp Data : {'question': 'q1', 'option1': 'q1', 'option2': 'q1', 'option3': 'q1', 'answer': 'q1'}, {'question': 'q2', 'option1': 'q2', 'option2': 'q2', 'option3': 'q2', 'answer': 'q2'}
Dictionary is not a typical container that you can index , it works on the principles of KEY
--> VALUE
pairs and cannot contain duplicate keys
I would suggest you to directly use temp
for your further usage in your code
Based on your edit -
if you still want to create a new dictionary you can do that as follows -
>>> t = [{'question': 'q1', 'option1': 'q1', 'option2': 'q1', 'option3': 'q1', 'answer': 'q1'}, {'question': 'q2', 'option1': 'q2', 'option2': 'q2', 'option3': 'q2', 'answer': 'q2'}]
>>> d = {}
>>>
>>>
>>> for i,k in enumerate(t):
... d[i] = k
...
>>> from pprint import pprint
>>> pprint(d)
{0: {'answer': 'q1',
'option1': 'q1',
'option2': 'q1',
'option3': 'q1',
'question': 'q1'},
1: {'answer': 'q2',
'option1': 'q2',
'option2': 'q2',
'option3': 'q2',
'question': 'q2'}}
>>>
Upvotes: 2