170 похожих чатов

Есть ли смысл использовать OrderedDict в python 3.7+?

16 ответов

21 просмотр

Если тебе нужно то поведение которое он в нарушение LSP переопределил для ==

Если надо

Ни разу не пригождался, но нужно понимать, что от той смысл его отличается от обычного.

Illia- Автор вопроса

Ну сейчас (начиная с 3.7) обычный словарь гарантирует order. Я так понимаю, единственный плюс - это совместимость с предыдущими версиями питона?

Illia
Ну сейчас (начиная с 3.7) обычный словарь гарантир...

Обычный словарь сохраняет порядок вставки, что удобно для итерации, но без костылей не контролируемо. OrderedDict позволяет порядком управлять (хоть и по-извращенски).

Illia- Автор вопроса
Illia
Мне только порядок вставки важен

Тогда тебе не нужен OrderedDict. А нужен зачем, кстати?

Illia- Автор вопроса
evle
Тогда тебе не нужен OrderedDict. А нужен зачем, кс...

У меня есть два листа со словарями Использую itertools.groupby что бы сгрупировать их по company_id, но нужно что бы порядок был сохранен Для того что бы insertion делать за О(1) во время итерации по второму списку (там порядок будет таким же, но многие company_id могут не присутствовать), решил сделать общий словарь, где company_id будет ключом

Illia
У меня есть два листа со словарями Использую itert...

Не совсем понял, что именно ты делаешь. Можно кодом?

Illia- Автор вопроса
evle
Не совсем понял, что именно ты делаешь. Можно кодо...

modules_list = [{‘company_id’: 1, ‘module_name’: ‘abcde’}, {‘company_id’: 1, ‘module_name’: ‘abcde1’}, {‘company_id’: 2, ‘module_name’: ‘abc’}, …] streams_list = [{‘company_id’: 1, ‘stream_name’: ‘abcde’}, …] Мне эти два списка нужно обьеденить в один список сгруппированный по company_id, то есть что-то вроде этого: [{quizzes: all_modules_of_company_1, streams: all_streams_of_company_1}, {quizzes: all_modules_of_company_2, streams: all_streams_of_company_2},…] Но во втором списке (streams) не обязательно будут присутствовать все company_id из первого списка

Ок. А как здесь важен порядок вставки в словарь? Выглядит как будто полезнее чтобы в списках компании шли в одном и том же порядке.

Illia
modules_list = [{‘company_id’: 1, ‘module_name’: ‘...

Там охренеть много данных, что нужно думать об алгоритмической сложности?

Illia- Автор вопроса
evle
Ок. А как здесь важен порядок вставки в словарь? В...

Они и идут в одном порядке, просто может быть такое: modules_list = [company_1, company_3, company_4, company_5, company_6, company_7…] (я специально в этом примере делаю unique by company_id) streams_list = [company_1, company_5, company_7, …] Они идут в одинаковом порядке, но отсутствие пробелов во втором списке не гарантированно

Illia- Автор вопроса
evle
Ок. А как здесь важен порядок вставки в словарь? В...

А порядок вставки в словарь важен что бы потом это конвертировать в лист. В JSON вроде бы порядок ключей в словаре не сохраняется, поэтому придется переводить

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта