Понимание списка python в словаре

def square100():
  d = {f"{x}" : f"{x**2}" for x in range(101)}
  print(d)


if __name__ == "__main__":
  quadrado100()

Эта функция возвращает значения в порядке возрастания.

def square100():
  d = {f"{x} : {x**2}" for x in range(101)}
  print(d)


if __name__ == "__main__":
  quadrado100()

Но эта функция, которая должна делать то же самое, отображается в случайном порядке. Кто-нибудь знает, почему?

Здесь нечего сказать

В Python словари неупорядочены. Иногда это может быть напечатано в правильном порядке, но не каждый раз!

Adrien Derouene 21.11.2022 17:54

@AdrienDerouene Поскольку словари версии 3.8 сохраняют свой порядок вставки.

Barmar 21.11.2022 17:55

Ваш второй пример - это не словарь, это набор строк x : y. Наборы не запоминают свой порядок.

Barmar 21.11.2022 17:56

В вашем коде нет списков. Понимание списка, как и обычный список, находится внутри [], а не {}.

Barmar 21.11.2022 17:56

@Barmar: гарантия фактически началась с 3.7 (хотя все существующие интерпретаторы, совместимые с 3.6, CPython и PyPy, используют dict с порядком вставки в качестве детали реализации).

ShadowRanger 21.11.2022 18:00
Мутабельность и переработка объектов в Python
Мутабельность и переработка объектов в Python
Объекты являются основной конструкцией любого языка ООП, и каждый язык определяет свой собственный синтаксис для их создания, обновления и...
Другой маршрут в Flask Python
Другой маршрут в Flask Python
Flask - это фреймворк, который поддерживает веб-приложения. В этой статье я покажу, как мы можем использовать @app .route в flask, чтобы иметь другую...
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
Проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
Python PyPDF2 - запись метаданных PDF
Python PyPDF2 - запись метаданных PDF
Python скрипт, который будет записывать метаданные в PDF файл, для этого мы будем использовать PDF ридер из библиотеки PyPDF2 . PyPDF2 - это...
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
Почему Python - идеальный выбор для проекта AI и ML
Почему Python - идеальный выбор для проекта AI и ML
Блог, которым поделился Harikrishna Kundariya в нашем сообществе Developer Nation Community.
1
5
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Последнее является set пониманием, а не dict пониманием (ни одно из них не является list пониманием); разница в том, что нет : (на верхнем уровне, вне строковых кавычек и т.п.), отделяющего ключ от значения в set литерале или понимании, в то время как в dict литерале или понимании есть один.

Sets имеют произвольный порядок (фактически случайный для строк; он будет меняться между разными запусками Python и может меняться даже в рамках одного запуска Python в зависимости от порядка добавления и удаления элементов), а dicts (в 3.6 как деталь реализации, а в версии 3.7+ в качестве языковой гарантии) упорядочены по вставке. Таким образом, ваш первый фрагмент кода (понимание dict) сохраняет порядок, а второй, основанный на sets, — нет.

Другие вопросы по теме