Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 16, 2021 21:11:29

lav_andrey
Зарегистрирован: 2021-10-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Логика работы словаря?

Почему элементы словаря в первом случае выводятся не по порядку?

 S = {i**2 for i in range(10)}
D = {i: i**2 for i in range(10)}
print(S)
print(D)
#{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
#{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

Офлайн

#2 Окт. 16, 2021 21:23:04

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Логика работы словаря?

lav_andrey
Почему?
Глубоко философский вопрос.
А почему 5 не делится на 2?

Это вы сначала ответьте почему они по вашему должны быть по порядку.
Кроме того это не словарь.

Нет никакой логики в поведении set. Есть спецификации языка, он должен им удовлетворять. Ни больше ни меньше.

Некая логика есть в решении людей выбравших такие спецификации. Без требования упорядочивания множество может работать быстрее.



Отредактировано doza_and (Окт. 16, 2021 21:34:13)

Офлайн

#3 Окт. 16, 2021 22:33:58

lav_andrey
Зарегистрирован: 2021-10-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Логика работы словаря?

doza_and
Это вы сначала ответьте почему они по вашему должны быть по порядку

потому что функция for переберает переменную i от 0 до 9 в порядке возрастания.
и если переменную S определить как список, то есть в квадратные, а не в фигурные {} скобки, то и вывод будет в порядке возрастания.
поэтому и возник вопрос

Отредактировано lav_andrey (Окт. 16, 2021 22:34:48)

Офлайн

#4 Окт. 16, 2021 22:46:03

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1368
Репутация: +  121  -
Профиль   Отправить e-mail  

Логика работы словаря?

lav_andrey
Почему элементы словаря в первом случае выводятся не по порядку?
 S = {i**2 for i in range(10)}
- это не словарь, а множество,там все значения уникальные, и неупорядоченые

во тором случае словарь

Офлайн

#5 Окт. 17, 2021 05:06:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9878
Репутация: +  853  -
Профиль   Отправить e-mail  

Логика работы словаря?

lav_andrey
Почему элементы словаря в первом случае выводятся не по порядку?
Вообще, они оба должны не по порядку выводиться. Первая запись - это множество (динамическая структура такая), вторая запись - это нагруженное множество (динамическая структура такая). Эти динамические структуры не упорядочены. Раньше в питоне так и было. Но потом для удобства питона нагруженные множества сделали в нём упорядоченными. Существующие коды, которые были написаны уже к тому времени, это не ломало никак, поэтому изменение в питон внесли.

Главное свойство множества и нагруженного множества - это очень быстрый поиск в нём. Соответственно, для миллиарда элементов во множестве поиск будет таким же быстрым, как и для тысячи элементов. Проверка того, принадлежит ли такой-то элемент множеству, занимает одинаковое время и происходит быстро.

В питоне множество называется set.
В питоне нагруженное множество называется dict.
В других языках по-другому они называются, если они есть там. Но суть в том, что это общее понятие для программирования.



Офлайн

#6 Окт. 17, 2021 08:32:49

lav_andrey
Зарегистрирован: 2021-10-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Логика работы словаря?

Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version