哈希一个元组与Python中的期望值不匹配

问题描述 投票:0回答:2

我正在尝试解决以下问题:

给定一个整数 n 和 n 个空格分隔的整数作为输入,创建一个由这 n 个整数组成的元组 t 。然后计算并打印 hash(t) 的结果。

我正在使用Python 3。 我的代码是

if __name__ == '__main__':
    n = int(input())
    integer_list = map(int, input().split())
    t = tuple(integer_list)
    print(hash(t))

预期输出是3713081631934410656,但我得到-3550055125485641917。我认为我的代码是正确的。为什么我得到不同的输出?

如果我使用 Pypy3,我会得到正确的输出 3713081631934410656 但使用 Python 3 则不然

python-3.x
2个回答
3
投票

Python 不承诺元组哈希会产生任何特定的输出。

hash(some_tuple)
不存在“正确”的输出。元组哈希实现可以自由更改,并且在 Python 3.8 中已经更改了

您的作业可能是为与您正在测试的版本不同的 Python 版本编写的,没有考虑元组哈希算法是一个实现细节这一事实。


0
投票

在Python3上运行程序时,您将获得您提到的哈希值。尝试在 Pypy3 上运行它,它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.