Как организовано обратное значение заданной функции?

Вот мой код: я использовал set () и возвратил [3, 14, 6]

items = [3, 6, 3, 3, 14] set(items) >>> set([3,14,6]) 

Мой вопрос в том, как функция set организует вывод значений. Если мы подумаем об этом, то 3 – это первое число, а 6 – второе в списке, поэтому должно ли оно выводить [3,6,14] вместо этого?

  • Сложность пересечения
  • Является ли «набор» python «стабильным»?
  • Найти не общие элементы в списках
  • Почему объединение потребляет больше памяти, если аргумент является множеством?
  • Переопределение методов набора в Python
  • Обобщите список словарей на основе общих значений ключа
  • Python 2.6 отправляет объект подключения через Queue / Pipe / etc
  • Почему я могу передать метод экземпляра для multiprocessing.Process, но не многопроцессорный.Pool?
  • Как работает str (список)?
  • Модуль импорта Python из папки sibling
  • Добавление режимов конфигурации в Plotly.Py offline - режим
  • Python re.findall () работает не так, как ожидалось
  • 2 Solutions collect form web for “Как организовано обратное значение заданной функции?”

    Наборы неупорядочены. Из документации :

    Будучи неупорядоченной коллекцией, наборы не записывают позицию элемента или порядок вставки.

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

    Если вас интересует базовая модель данных, базовая структура данных называется Хэш-таблицей , но в наборах хранятся только ключи, значения остаются пустыми.

    @Martijn дал вам причину, почему, но всего пару бит, которые могут быть полезны:

    Вы можете использовать dict со значением как ключ и позицию из вашего исходного списка в качестве значения:

     d = dict( (val, idx) for idx, val in enumerate(items) ) # or {val:idx for idx, val in enumerate(items)} in 2.7+ print d.keys() # unique values: [3, 14, 6] print sorted(d) # unique values in order [3, 6, 14] print sorted(d, key=d.get) # unique values in original order (based on last occurence of key [6, 3, 14] 

    И немного немного больше работы, чтобы получить первоначальный заказ, основанный на первом событии:

     d = {} for idx, val in enumerate(items): d.setdefault(val, idx) 
    Python - лучший язык программирования в мире.