2013-08-22 2 views
0

Можем ли мы создать отсортированный список при создании самого списка?Создание отсортированного списка при создании

Или

Есть ли другие структуры данных, которые могут поместить значения в отсортированном порядке, во время создания?

list = [] 
list.append("cde") 
list.append("abc") 
list.append("xyz") # append element in sorted order itself 

Я знаком с

list.sort() #or 
list = sorted(list) 
+0

См. http://stackoverflow.com/questions/5527630/is-there-a-standard-python-data-structure-that-keeps-thing-in-sorted-order – alecxe

ответ

1

Вы можете использовать bisect выполнить заказанные вставки в последовательности.

bisect.bisect_left (а, х, Lo = 0, привет = Len (а))

Найти точку вставки для х в поддерживать порядок сортировки. [...] Возвращаемое значение подходит для использования в качестве первого параметра для list.insert() при условии, что a уже отсортировано.

0

Вы можете использовать OrderedDict для создания заказанных словарей. Вы можете импортировать OrderedDict здесь from collections import OrderedDict

0

вы можете использовать heapq методы

>>> list = [] 
>>> import heapq 
>>> heapq.heappush(list, "cde") 
>>> heapq.heappush(list, "abc") 
>>> heapq.heappush(list, "xyz") 
>>> heapq.nsmallest(3, list) 
['abc', 'cde', 'xyz'] 

Это на самом деле не заказанные, но вы могли бы выполнить заказанные операции, которые нужно

0

Я нашел, что это полезно,

class SList(list): 
    def append(self, data): 
     super(SList, self).append(data) 
     super(SList, self).sort() 


slist = SList() 
slist.append("cde") 
slist.append("abc") 
slist.append("xyz") 
print slist 

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

Смежные вопросы