我如何将函数参数发送到字典中,然后发送到json中?

时间:2019-04-02 09:04:19

标签: python json discord.py

我正在创建一个不和谐的机器人。需要将命令参数发送到字典中,然后发送到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'中的此错误 如何解决?

1 个答案:

答案 0 :(得分:0)

使用dict函数创建字典时,关键字参数将转换为关键字。例如,如果您确实喜欢dict(username=rere),则会得到{ 'username': 'gg gg' }

要获取name变量的内容,可以执行以下操作:

db = {}
db[name] = rere

db = { name: rere }

在两种情况下,变量name的内容都将用作字典中的键。