Python:sets和set.intersection - 输出的随机顺序?

时间:2014-01-04 21:22:24

标签: python python-3.x set

我对集合的无序性质有疑问。

此代码:

#Set1 is 'a' to 'e' in alpha order
set1 = {}
set1 = {'a', 'b', 'c', 'd', 'e'}
print('\nSet1 :', set1)

#Set2 is 'f' to 'a' (missing 'e') in reverse-alpha order
set2 = {}
set2 = {'f', 'd', 'c', 'b', 'a'}
print ('Set2 :',  set2)

print ('Common to both sets:',  set1.intersection(set2))

...给出了set1set2set.intersection结果中元素的随机排序:

Set : {'a', 'c', 'b', 'e', 'd'}
Set: {'a', 'c', 'b', 'd', 'f'}
Common to both sets: {'a', 'c', 'b', 'd'}

虽然本身不​​是问题,但我的问题是:这是否有一套算法?或者我(可行地)使用此属性来生成两个列表中存在的项目的随机列表(即它是否真的是随机的?)。顺便说一句,我不知道为什么我会这样做 - 大声思考。

1 个答案:

答案 0 :(得分:1)

打印集的顺序除其他外,还基于其内容的散列 - 它不是随机的。如果您需要订购一套,您可以随时使用内置的sorted()功能:

>>>> sorted(set1.intersection(set2))
{'a', 'b', 'c', 'd'}