Добавление нескольких диктов в dict | python, discord.py

#python #python-3.x #discord.py

Вопрос:

Мой код:

 reps = {}

with open("reps.json", "r") as f:
    reps = json.load(f)


@client.command()
async def rep (ctx, member: discord.Member):
    try:

        count = reps[f'{ctx.guild.id}'][f'{member.id}']
        reps[f'{ctx.guild.id}'][f'{member.id}'] = count   1
        with open('reps.json', 'w') as f:
            json.dump(reps, f)
        await ctx.message.add_reaction('<a:check12:810961073746345985>')
    except:

        reps[f'{ctx.guild.id}'] = {}
        reps[f'{ctx.guild.id}'][f'{member.id}'] = 1
        with open('reps.json', 'w') as f:
            json.dump(reps, f)
        await ctx.message.add_reaction('<a:check12:810961073746345985>')
 

Проблема в том, что когда я использую эту команду, мой файл json выглядит так:

 {"GUILD_ID": {"MEMBER_ID": 1}}
 

Это выглядит нормально, но когда я пытаюсь использовать эту команду для другого участника, файл json не добавляет другой словарь, он просто изменяет имя диктатора на идентификатор другого участника, поэтому файл выглядит следующим образом:

 {"GUILD_ID": {"ANOTHER_MEMBER_ID": 1}}
 

И чего я ожидаю, так это:

 {"GUILD_ID": {"MEMBER_ID": 1}}
 

И после использования команды на другом участнике:

 {"GUILD_ID": {"MEMBER_ID": 1, "ANOTHER_MEMBER_ID": 1}}
 

Комментарии:

1. У вас есть эта строка reps[f'{ctx.guild.id}'] = {} , которая удаляет предыдущий дикт, сохраненный в этом ключе

2. Я вижу, но я все еще не знаю, как заставить май диктовать только добавление другого ключа без удаления предыдущих ключей.

3. Просто удалите эту строку

4. Проверьте, есть ли guild_id ключ уже в диктанте, если он там, добавьте нового участника, иначе создайте пустой диктант, как вы делаете в этой строке.

5. @Pietro Спасибо, это сработало ;П.