Переопределить контроллеры Json / JsonResult для возврата JSON.Net:
Здесь у Вас есть некоторые альтернативы: http://www.peterbe.com/plog/uniqifiers-benchmark
Самый Быстрый:
def f7(seq):
seen = set()
seen_add = seen.add
return [x for x in seq if not (x in seen or seen_add(x))]
, Почему присваиваются seen.add
к seen_add
вместо того, чтобы просто звонить seen.add
? Python является динамическим языком и разрешением seen.add
, каждое повторение является более дорогостоящим, чем разрешение локальной переменной. seen.add
, возможно, изменился между повторениями, и время выполнения не достаточно умно для исключения этого. Для избегания рискованных действий это должно проверить объект каждый раз.
, Если бы Вы планируете использование этой функции много на том же наборе данных, возможно, Вы были бы более обеспечены с упорядоченным множеством: http://code.activestate.com/recipes/528878/
O (1) вставка, удаление и членская проверка на операцию.
(Маленькое дополнительное примечание: seen.add()
всегда возвраты None
, таким образом, or
выше там только как способ делать попытку обновления набора, и не как неотъемлемой части логического теста.)
from itertools import groupby
[ key for key,_ in groupby(sortedList)]
список не должен даже быть , отсортировал , достаточное условие - то, что группируются равные значения.
Редактирование: Я предположил, что "сохранение порядка" подразумевает, что список на самом деле заказан. Если дело обстоит не так, то решением от MizardX является правильное.
Общественное редактирование: Это - однако самый изящный способ "сжать дублирующиеся последовательные элементы в единственный элемент".