2013-08-22 161 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_leftA,X,LO = 0,HI = LEN(一)

在找到一個X插入點維持有序。 [...]返回值適合用作list.insert()的第一個參數,前提是a已被排序。

0

您可以使用OrderedDict來創建有序的詞典。 你可以從這裏from collections import OrderedDict

0

導入OrderedDict可以使用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 

以同樣的方式,我們可以重寫其他方法也保持列表狀態如此Đ