Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2007 15:36:23

zero_mod
От:
Зарегистрирован: 2007-09-07
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему выводит словарь через цикл с конца? :(

Вот код:

dict = {"one": "1", "two": "2", "three": "3"}

for k in dict.keys():
print k
выводит:
three
two
one

Почему с конца? Объясните плиз.



Офлайн

#2 Сен. 9, 2007 16:06:34

astoon
От:
Зарегистрирован: 2007-04-09
Сообщения: 335
Репутация: +  2  -
Профиль   Отправить e-mail  

Почему выводит словарь через цикл с конца? :(

Потому что сортирует ключи хэша в алфавитном порядке ;)



Офлайн

#3 Сен. 9, 2007 16:35:34

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Почему выводит словарь через цикл с конца? :(

astoon
Потому что сортирует ключи хэша в алфавитном порядке ;)
Неверно. Он их вообще не сортирует.

P.S. for k in d.keys() – устаревшее, лучше for k in d



Отредактировано (Сен. 9, 2007 16:39:27)

Офлайн

#4 Сен. 9, 2007 17:09:33

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Почему выводит словарь через цикл с конца? :(

Это просто детали реализации дерева, корое внутри dict



Офлайн

#5 Сен. 10, 2007 03:08:34

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Почему выводит словарь через цикл с конца? :(

Все правильно. Позволю себе немного более развернутый комментарий.
dict - это такая структура, которая сортирует контейнер по хеш-значениям ключей. Т.е. в общем случае - непредсказуемо. md5 или sha1 - частные случаи для вычисления хешей. В dict куда более простой (4 байта).
Позволяет быстро искать по ключу. Для чего и делался.
Для сортировки по ключу в алфафитном или каком другом порядке не подходит. Для этой цели разработано множество других контейнеров, и не сложно добавить сюда еще один ваш, уникальный



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version