Есть ли у Python упорядоченный набор? - PullRequest
396 голосов
/ 31 октября 2009

Python имеет упорядоченный словарь . А как насчет заказанного набора?

Ответы [ 13 ]

3 голосов
/ 22 января 2017

Пакет ParallelRegression предоставляет класс упорядоченных наборов setList () , который является более полным методом, чем параметры, основанные на рецепте ActiveState. Он поддерживает все методы, доступные для списков, и большинство, если не все, методы, доступные для множеств.

0 голосов
/ 16 июля 2018

Таким образом, у меня также был небольшой список, в котором у меня была возможность ввести неуникальные значения.

Я искал существование какого-то уникального списка, но потом понял, что проверка существования элемента перед его добавлением работает просто отлично.

if(not new_element in my_list):
    my_list.append(new_element)

Я не знаю, есть ли предостережения для этого простого подхода, но он решает мою проблему.

0 голосов
/ 16 апреля 2012

Существует четыре вида заказов, которые можно пожелать, я считаю:

  1. Заказывается по ключу
  2. Упорядочено по значению (хотя я не слышал, чтобы кто-нибудь просил об этом)
  3. Упорядочено по времени модификации
  4. Заказывается по времени добавления

Я считаю, что коллекции. OrdderedDict дает вам №4. Или вы можете удалить ключ и повторно добавить его, для # 3.

Для # 1 вы, вероятно, должны проверить красно-черное дерево или трепу:

Красно-черные деревья имеют низкую изменчивость во времени работы (что может быть лучше для интерактивных приложений), но они не так быстры, как средние трепы (что может быть лучше для пакетной обработки - трепы не реорганизуются часто, делая в среднем они бывают быстрыми, но когда они действительно реорганизуются, это может занять относительно много времени).

Обе они являются установленными структурами данных с реализациями на многих языках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...