Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 24, 2017 18:11:52

Serpuh
Зарегистрирован: 2017-08-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Dictionary, отменить сортировку?

Создаю словарь

dataProc = {“LoadImages”:“SUCCESS”}
dataProc.update({“ComputeFeatures”:“SUCCESS”})
dataProc.update({“ComputeMatches”:“SUCCESS”})
dataProc.update({“SFM”:“SUCCESS”})
dataProc.update({“GPS”:“SUCCESS”})

Но при добавлении элементов в отладчике видно что порядок слов меняется.

“LoadImages”: “SUCCESS”,
“ComputeMatches”: “SUCCESS”,
“SFM”: “SUCCESS”,
“ComputeFeatures”: “SUCCESS”,
“GPS”: “SUCCESS”

А мне нужно чтобы порядок следования слов не менялся. Словарь нужен для последующей распечатки в json для отслеживания pipeline скрипта.

Отредактировано Serpuh (Авг. 24, 2017 18:13:30)

Офлайн

#2 Авг. 24, 2017 18:16:10

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2783
Репутация: +  185  -
Профиль   Отправить e-mail  

Dictionary, отменить сортировку?

Ну сколько раз можно писать что словарь сортировку не поддерживает!



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Авг. 24, 2017 18:23:47

Serpuh
Зарегистрирован: 2017-08-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Dictionary, отменить сортировку?

Rodegast
Ну сколько раз можно писать что словарь сортировку не поддерживает!
Мне как раз нужно отсутствие сортировки, как добавлено, так и следует. А словарь почему-то сам слова переставляет.

Офлайн

#4 Авг. 24, 2017 18:39:48

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Dictionary, отменить сортировку?

Serpuh
Вы н понимаете. Отсутствие сортировки как раз не дает никаких гарантий о том как элементы будут расположены.
То что вы хотите это OrderedDict в модуле collections



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Авг. 24, 2017 19:20:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Dictionary, отменить сортировку?

Serpuh
Словарь нужен для последующей распечатки в json для отслеживания pipeline скрипта.
Да не нужен вам словарь. Скорее всего вам нужен список словарей.



Офлайн

#6 Авг. 24, 2017 20:22:16

Serpuh
Зарегистрирован: 2017-08-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Dictionary, отменить сортировку?

JOHN_16
Отсутствие сортировки как раз не дает никаких гарантий о том как элементы будут расположены.
Понятно. Я сам с++сник, там если не передвинешь, само ничего не двигается.

JOHN_16
То что вы хотите это OrderedDict в модуле collections
Спасибо, то что нужно.

FishHook
Да не нужен вам словарь. Скорее всего вам нужен список словарей.
Не, его модуль json и распечатает как list словарей, а это не совсем что нужно.

Отредактировано Serpuh (Авг. 24, 2017 20:25:01)

Офлайн

#7 Авг. 25, 2017 00:36:19

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

Dictionary, отменить сортировку?

Serpuh
Понятно. Я сам с++сник, там если не передвинешь, само ничего не двигается.
Аналог словаря питона в C++
http://en.cppreference.com/w/cpp/container/unordered_map

А вообще эта динамическая структура называется “нагруженное множество”. То есть это такое множество (тоже динамическая структура), в котором у каждого элемента есть нагрузка. А динамической она называется потому, что количество элементов может меняться после создания структуры.


  
>>> import json
>>> import collections
>>> 
>>> d = collections.OrderedDict((('a', 1), ('b', 2), ('c', 3)))
>>> 
>>> d
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> 
>>> json.dumps(d)
'{"a": 1, "b": 2, "c": 3}'
>>>



Отредактировано py.user.next (Авг. 25, 2017 00:41:44)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version