Форум сайта python.su
Почему элементы словаря в первом случае выводятся не по порядку?
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}
Офлайн
lav_andreyГлубоко философский вопрос.
Почему?
Отредактировано doza_and (Окт. 16, 2021 21:34:13)
Офлайн
doza_and
Это вы сначала ответьте почему они по вашему должны быть по порядку
Отредактировано lav_andrey (Окт. 16, 2021 22:34:48)
Офлайн
lav_andrey
Почему элементы словаря в первом случае выводятся не по порядку?
S = {i**2 for i in range(10)}
Офлайн
lav_andreyВообще, они оба должны не по порядку выводиться. Первая запись - это множество (динамическая структура такая), вторая запись - это нагруженное множество (динамическая структура такая). Эти динамические структуры не упорядочены. Раньше в питоне так и было. Но потом для удобства питона нагруженные множества сделали в нём упорядоченными. Существующие коды, которые были написаны уже к тому времени, это не ломало никак, поэтому изменение в питон внесли.
Почему элементы словаря в первом случае выводятся не по порядку?
Офлайн
Спасибо!
Офлайн