lovebarcafc
@lovebarcafc
Кратко не получится

Почему названия из словаря выводятся в разнобой?

Всем привет.
Почему у меня из файла с некоторыми настройками в виде словаря, выводятся названия элементов не по порядку?
for i in config['Difficulties']:
    # кнопки с выбором сложности.
    keyboardDifficult.row(i)

Выводят названия кнопок. Кусок кода из файла с настройками:
# Названия режимов сложности.
    "Difficulties": {
        "Легкий",
        "Нормальный",
        "Трудный",
        "Невозможный"
    }

Что я вижу в телеграме:
5e481172da4ff587860559.png
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
До версии Python 3.7 словари были неупорядоченными, что вероятнее всего в твоем случае и является проблемой. Или используй OrderedDict, или обнови Python до версии не ниже 3.7
P.S. Не заметил одну важную деталь, у тебя в словаре Difficulties не словарь с названиями сложности, а множество, вот пример:
In [1]: foo = {'foo': {'1', '2', '3', '4', '5'}}

In [2]: foo
Out[2]: {'foo': {'1', '2', '3', '4', '5'}}

In [3]: type(foo['foo'])
Out[3]: set

А они в любой версии Python неупорядоченные, вот документация по ним.
Используй список:
"Difficulties": [
        "Легкий",
        "Нормальный",
        "Трудный",
        "Невозможный"
    ]

In [1]: foo = {"Difficulties": [
   ...:         "Легкий",
   ...:         "Нормальный",
   ...:         "Трудный",
   ...:         "Невозможный"
   ...:     ]}

In [2]: for f in foo['Difficulties']:
   ...:     print(f)
   ...:
Легкий
Нормальный
Трудный
Невозможный
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы