Форум сайта python.su
0
Добрый день,
я так понял что dict хранится по-своему, и из-за этого сбивается порядок. Как можно обойти это?
Что бы при переборе выводилось в том же порядке, как и записано в переменной? sort не подходит…
Офлайн
568
В модуле collections есть класс OrderedDict, но не используйте его без нужды, он работает медленнее обычного dict()
Офлайн
0
Как раз нужда есть, сильно медленнее? Таких переменных у меня штук 15 в каждом по 5-30 значений, я думаю это не те объемы, чтобы тормозить.
Офлайн
568
armorСпидометр Вам в руки
сильно медленнее
Офлайн
0
Разницы не заметил. Спасибо за помощь.
Офлайн
568
# -*- coding: utf-8 -*- import timeit from collections import OrderedDict s=range(1000) d=dict(enumerate(s)) d1=OrderedDict(enumerate(s)) def f1(): d.update(enumerate(s, 2000)) def f2(): d1.update(enumerate(s, 2000)) print timeit.timeit('f1()', number=10000, setup="from __main__ import d,s, f1") print timeit.timeit('f2()', number=10000, setup="from __main__ import d1,s, f2")
>>>0.797545909882
>>>6.81275892258
Офлайн
0
Плохо конечно, но у меня они используются как константы и все работа с ними сводится к перебору и обращению по ключу.
Офлайн