Python:以一组数字排序

时间:2011-11-10 18:56:25

标签: python set

使用此代码:

print set(a**b for a in range(2, 5) for b in range(2, 5))

我得到了这个答案:

set([64, 256, 4, 8, 9, 16, 81, 27])

为什么没有排序?

2 个答案:

答案 0 :(得分:7)

集合不是python或任何其他语言的有序集合。

通常使用散列键(哈希码)实现集合。因此,顺序可能与如何使用散列函数而不是其元素的自然顺序有关。

如果您需要订购,请考虑使用清单。

答案 1 :(得分:2)

集合本质上是无序容器。来自documentation

  

set对象是不同的可哈希对象的无序集合。

它们使用哈希表实现,便于进行O(1)成员资格测试。如果您需要有序集,请尝试OrderedDict.fromkeys()

from collections import OrderedDict
OrderedDict.fromkeys(a**b for a in range(2, 5) for b in range(2, 5))