创建时创建排序列表

时间:2013-08-22 08:19:59

标签: python list data-structures

我们可以在创建列表本身时创建排序列表吗?

或者

是否有其他数据结构可以在创建时按排序顺序放置值?

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

我熟悉

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

4 个答案:

答案 0 :(得分:1)

您可以使用bisect在序列中执行有序插入。

  

bisect.bisect_left a,x,lo = 0,hi = len(a)

     

a 中找到 x 的插入点,以维护排序顺序。 [...]返回值适合用作list.insert()的第一个参数,假设 a 已经排序。

答案 1 :(得分:0)

您可以使用OrderedDict创建有序词典。 您可以从此处OrderedDict

导入from collections import OrderedDict

答案 2 :(得分:0)

您可以使用heapq方法

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

它实际上并未订购,但您可以执行所需的有序操作

答案 3 :(得分: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

同样,我们也可以覆盖其他方法,以保持列表状态排序