我正在将代码库从Python 2升级到Python 3。
测试用例在Python 3代码中失败,因为set()
函数产生的顺序与Python 2不同。
例如;
# Here in Python 2.7 the PYTHONHASHSEED is disabled.
list = {"it","is","rishabh","Mishra"}
# Below, in Python 3
list = {"rishabh","it","is","mishra"}
我希望命令与Python 2.7保持一致,以便通过测试用例。
在上面的Python 3.3中,PYTHONHASHSEED=0
禁用了随机改组,但产生的顺序与Python 2.7相同。
如何使用PYTHONHASHSEED
并在Python 3中保持顺序?
答案 0 :(得分:2)
您永远不应该考虑特定的设置顺序。 Set是无序集合:
Python还包括集合的数据类型。集合是没有重复元素的无序集合。基本用途包括成员资格测试和消除重复条目。集合对象还支持诸如并集,交集,差和对称差之类的数学运算。
如果您的测试依赖于此,那就错了。如果要按特定顺序设置“集合”,则应使用元组或列表并检查元素的唯一性。或者,您可以基于MutableSet实现your own OrderedSet。