我对集合的无序性质有疑问。
此代码:
#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))
...给出了set1
,set2
和set.intersection
结果中元素的随机排序:
Set : {'a', 'c', 'b', 'e', 'd'}
Set: {'a', 'c', 'b', 'd', 'f'}
Common to both sets: {'a', 'c', 'b', 'd'}
虽然本身不是问题,但我的问题是:这是否有一套算法?或者我(可行地)使用此属性来生成两个列表中存在的项目的随机列表(即它是否真的是随机的?)。顺便说一句,我不知道为什么我会这样做 - 大声思考。
答案 0 :(得分:1)
打印集的顺序除其他外,还基于其内容的散列 - 它不是随机的。如果您需要订购一套,您可以随时使用内置的sorted()
功能:
>>>> sorted(set1.intersection(set2))
{'a', 'b', 'c', 'd'}