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

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

16 ответов

25 просмотров

Если тебе нужно то поведение которое он в нарушение 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 вроде бы порядок ключей в словаре не сохраняется, поэтому придется переводить

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта