Распаковка списка, считанного из файла JSON для вызова функции

#python #json #discord.py

Вопрос:

У меня есть файл JSON, содержащий следующие строки:

 {
    "manager": {
        "Community Developer" : 123,
        "Discord Administrator" : 456
    }
}
 

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

item_list = [x for tup in permissions["manager"].items() for x in tup]

А затем я хотел распаковать этот список для использования в вызове функции из discord.py.

@commands.has_any_role(*item_list)

К сожалению, именно тогда все перестало работать. Декоратор discord всегда, кажется, возвращает False, хотя у меня явно есть упомянутые роли на моем сервере. Когда я пытаюсь объявить список ролей как список строк в своем коде напрямую и распаковать его, это работает. Не работает: список элементов создан с данными, считанными из файла, и пониманием списка. Действительно работает: определение списка напрямую: item_list = ["Community Developer",123,"Discord Administrator",456]

Оба списка содержат одни и те же элементы и расположены в одном и том же порядке. Распаковка их для печати приводит к тому, что один и тот же список печатается дважды. Разница лишь в том, как они были созданы.

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

1. Не было бы более эффективным просто посмотреть и указать значение пары ключей с помощью цикла, вместо того, чтобы распаковывать все это каждый раз? Я полагаю, что если ваш список предметов станет достаточно большим, это будет огромная трата памяти.

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

3. Но тогда вы могли бы просто использовать итератор для словаря с чем-то вроде if role in author.roles итератора?