我正在创建一个不和谐的机器人。需要将命令参数发送到字典中,然后发送到json中。首先作为键,然后作为数组。
但是!它仅发送第二个和第三个参数。
@client.command(pass_context=True)
async def next(ctx,name,time):
author = ctx.message.author
#role authentification
if "561139623250755585" in [y.id for y in author.roles]:
rere = time + ' ' + date
db = dict(name = rere)
with open("time.json" , "a") as file:
json.dump(db, file)
with open("time.json" , "r") as fil:
Dec = json.load(fil)
Out = Dec[name]
await client.say(Out)
else:
with open("time.json" , "r") as file:
Dec = json.load(file)
Out = Dec[name]
await client.say(Out)
正如您在代码中看到的那样,它必须将三个参数转换为dict。但!好像python在这里db = dict(name = rere)
传递它,并在这里Out = Dec[name]
像键一样使用它
输入/next gg gg gg
后,它返回到json {"name":'gg gg'}
以及控制台Out = Dec[name]
KeyError: 'gg'
中的此错误
如何解决?
答案 0 :(得分:0)
使用dict
函数创建字典时,关键字参数将转换为关键字。例如,如果您确实喜欢dict(username=rere)
,则会得到{ 'username': 'gg gg' }
。
要获取name
变量的内容,可以执行以下操作:
db = {}
db[name] = rere
或
db = { name: rere }
在两种情况下,变量name
的内容都将用作字典中的键。