2015-07-03 2 views
4

Я нахожу это раздражающим, что словари Python не хранят ключи в порядке ввода. Недавно я начал использовать OrderedDict, который более удобен в использовании, поскольку он охватывает этот недостаток (например, итерация по столбцам файла CSV, где порядок столбцов должен соответствовать порядку клавиш словаря).Преимущества Dict над OrderDict

Сказано, есть ли какие-либо отличительные преимущества, которые имеет словарь для OrderedDict? Если так, то кто они?

+0

Мне не нравится строковое представление 'OrderDict', поэтому их часто конвертируют в обычные' dict's для отображения. Там также должны быть дополнительные накладные расходы для поддержания заказа, положенные в цену за вход для этой функции (и, откровенно говоря, я ее никогда не замечал). – martineau

+0

Обратите внимание, что в python 3.5 'OrderedDict' будет встроенным типом и будет использоваться для некоторых вещей (например,' ** kwargs'). – o11c

+0

Существует общее правило о (контейнерах) классах - не только для Python: больше функций => больше накладных расходов, больше памяти => медленнее. Разумеется, все виды сопоставимых типов контейнеров. Это зависит от вас, что вам нужно, и сколько недостатков вы можете или хотите принять. Как в реальной жизни: ничего не бесплатно. – Olaf

ответ

4

Словарь - это более простая структура данных, которая занимает меньше места и немного быстрее. Он должен поддерживать только хеш-таблицу, а OrderedDict поддерживает как хэш-таблицу, так и связанный список.

Если вам не нужен порядок ключей, перейдите к более простой опции.

Также не следует упускать из виду поддержку языков для диктов. Легко напечатать {k1: v1, k2: v2}. Это еще одна победа для диктонов. Возможно, несправедливо, но вы здесь.

Смежные вопросы