I'm trying to create a .json from scratch, but I'm having some problems as you can see in the code below.
import json
storedata = {'intents' : []}
while True:
word = input("Enter a new word.: ")
if word.lower() == "exit":
break
else:
word2 = input("Enter with an answer for the word: ")
if bool(storedata['intents']):
storedata['intents'].append({
'tag': 'New',
'patterns':[word],
'responses':[word2],
'context_set':''
})
else:
#storedata.update('intents').append({
# ['patterns']:[word],
# ['responses']:[word2]
# })years_dict[line[0]].append(line[1])
#storedata('patterns',[]).append(word)
storedata.setdefault('patterns',[]).append(word)
storedata.setdefault('responses',[]).append(word2)
#storedata.get('intents').update('responses', word2)
#print("2")d.setdefault(year, []).append(value)
with open('storedata.json', 'w') as outfile:
json.dump(storedata, outfile, indent=2)
What I want to create is exactly this.
{
"intents": [],
"tag": "New",
"patterns": [
"aaaa",
"www"
],
"responses": [
"qqq",
"eee"
],
"context_set": ""
}
But what I've achieved so far is this
{
"intents": [],
"patterns": [
"aaa",
"qqq"
],
"responses": [
"www",
"sss"
]
}
He erases the tag and context_set. My question is I add before or try to do something with the update.
Since your 'intent' is an empty list, therefore, it is not going into if block and hence you are not getting 'tag' and 'context_set' in output. Try this:
while True:
word = input("Enter a new word.: ")
if word.lower() == "exit":
break
else:
word2 = input("Enter with an answer for the word: ")
if bool(storedata['intents']):
storedata['intents'].append({
'tag': 'New',
'patterns':[word],
'responses':[word2],
'context_set':''
})
else:
#storedata.update('intents').append({
# ['patterns']:[word],
# ['responses']:[word2]
# })years_dict[line[0]].append(line[1])
#storedata('patterns',[]).append(word)
storedata.setdefault('tag','New')
storedata.setdefault('patterns',[]).append(word)
storedata.setdefault('responses',[]).append(word2)
storedata.setdefault('context_set','')
#storedata.get('intents').update('responses', word2)
#print("2")d.setdefault(year, []).append(value)