1

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

或者

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

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

我熟悉

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

4 回答 4

2

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

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

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

于 2013-08-22T08:21:59.310 回答
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

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

于 2013-08-22T09:31:25.713 回答
0

您可以使用OrderedDict创建有序字典。你可以OrderedDict从这里导入from collections import OrderedDict

于 2013-08-22T08:22:41.303 回答
0

你可以使用heapq方法

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

它实际上不是有序的,但您可以执行您需要的有序操作

于 2013-08-22T08:26:22.020 回答