PYTHONHASHSEED值

时间:2019-05-24 10:58:15

标签: python python-3.x

我正在将代码库从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中保持顺序?

1 个答案:

答案 0 :(得分:2)

您永远不应该考虑特定的设置顺序。 Set是无序集合:

  

Python还包括集合的数据类型。集合是没有重复元素的无序集合。基本用途包括成员资格测试和消除重复条目。集合对象还支持诸如并集,交集,差和对称差之类的数学运算。

如果您的测试依赖于此,那就错了。如果要按特定顺序设置“集合”,则应使用元组或列表并检查元素的唯一性。或者,您可以基于MutableSet实现your own OrderedSet