【问题标题】:How do you define a hash function in Python如何在 Python 中定义哈希函数
【发布时间】:2015-12-06 03:11:07
【问题描述】:

我在Hash Table看一个视频,教授清楚地说:

现在假设我使用Python 将百万个值添加到我的哈希表中。

代码:

dictionary = {}
for i in xrange(1000000):
    dictionary[i] = ''

dictionary = {}
for i in ['A', 'B', 1, 2, 3, 4, 1, 'Hi']:
    dictionary[i] = ''

你如何在这里计算hash function?由于您不断向字典中添加元素,hash function 是否会根据元素总数不断变化?还是 hash function 在插入所有元素之前确定一次?

由于我的程序不知道字典中可能出现的所有值,我们如何确定这里的哈希函数?我的值列表可以是任何东西,而不仅仅是数字。

【问题讨论】:

  • 您指的是哪个 hash 函数,是您将用作表键的类的函数,还是散列表类本身的函数?跨度>
  • 可以神奇地为我列表中的每个值生成一个unique key
  • 哈希函数不这样做。
  • 你能详细说明一下吗!

标签: python hash hashmap hashtable hashcode


【解决方案1】:

Python 中字典的键可以是不可变的数据类型,只要它支持散列。例如,

X = 1
print(X.__hash__())

这显示了该对象值的唯一哈希值。 Dictionary 中的每个键都必须是唯一的,这就是为什么不能有重复键的原因。

Y = "1"
print(Y.__hash__())

Python 中的所有散列值都是整数,与您要散列的数据类型无关。

【讨论】:

  • 将你的行缩进 4 个额外的空格用于代码格式化。
  • 我在 iPad 上与它战斗,登录到我的 Macbook ~ 谢谢@user2357112
  • 你能说两个不同的值不会产生相同的哈希吗?
  • 一定有某个函数散列函数产生了所有这些整数值吧?
  • 查看此链接:docs.python.org/2/reference/datamodel.html - 他们谈论自定义哈希函数和其他相关内容
猜你喜欢
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 2015-02-02
  • 2010-12-02
相关资源
最近更新 更多