python比c语言简单,编程语言python和c

  python比c语言简单,编程语言python和c

  Python中的哈希表Python中嵌入的字典数据类型的实现就是哈希表。哈希表也称为字典或关联数组。正如名为“关联数组”的字符所示,哈希表像Python字典一样关联键和值。的标准数组数据结构使您能够根据数组中的位置搜索值。关联数组允许您基于键搜索值。哈希表的目标是提供有效的插入、删除和检索方法。另外,每种方法的一般情况是(1)效率。

  在我们的例子中,我们需要将每个字符映射到数组中适当的位置。这种映射的操作术语是散列函数。根据示例条件,当数组大小为26时,简单的哈希函数可以将字符A映射到位置0,将字符Z映射到位置25。以下Python函数是此哈希函数的实现

  Hash_letter(c):return ord(c)c)-ORD)a)# ORD返回ascii的数字的hash _ letter函数使用Python的ORD函数对字符执行ascii。

  这意味着哈希函数将键映射到数组或列表中存储键值的相应位置。如果该键没有出现在哈希表中,则必须使用一个特殊值来表示该位置尚未被使用;在Python中,如果None不是哈希表中存在的有效值,它可以用作这个特殊值。该键不需要存在于数组中。这是因为键可以一一映射到数组或列表中的所有位置。下面是Python版哈希表的完整实现。Python中没有内置字典。这个哈希表只能用大写字母作为键,每个方法的执行时间是(1)。

  class shah letter(object):def _ init _(self):self . table=26 *[None,]def__getitem_ ) sellect,key)3360 assert a =key= z pos=ord(key)-ord))a )if self . table(pos)==None 3360 raisekeyeerror)key or value):assert a =key= z pos=ord(key)-ord)a )self。Table key): assert a=key= z pos在每个位置存储值None,以指示哈希表中的位置不包含任何值。

  在向哈希表中添加一个键对时,使用hash函数将字母键映射到列表中的相应位置,然后将值存储在列表中的这个位置。哈希表不支持在同一个键中存储多个值。试图将第二个值存储在同一个键中会覆盖第一个值。当您尝试查找字母键时,它使用哈希函数将字母键映射到Python列表中的适当位置。如果列表中该位置的值为None,则哈希表中不存在该字符键。此外,代码会抛出类似Python内置字典的KeyError异常。如果列表中对应位置的值不为None,则表示这是与字母键关联的值,将返回该值。

  D=hah letter (d [a )=4报告了一个错误。这是因为assert位于不再声明的范围内。

  assert a =key= z assertion errod=hah letter(d))a)=4d)b)=5 print)d)a)# 4d=hah letter

  background(mostrecentcalllast):file d:main . py,第29行,in module print(d(c))file d 3360/main。)如果您事先知道一组in _ getitem _ raisekeyerror (key)键错误:“c”键可能会出现,那么这个简单示例中使用的策略将

  但遗憾的是,这种策略通常不太好。此外,如果可能的密钥集很大,但是没有使用这些密钥,那么这种策略将不会很好地工作。例如,假设我们可能的密钥集是从0到20亿的所有整数,我们的数组必须非常大,需要比一般计算机内存更多的存储空间。如果可能的密钥集是一个英语单词呢?应该使用哪个哈希函数,数组应该有多大?如果两个键被散列到数组中的相同位置会怎样?这些是我们在本节剩余部分讨论的实现问题。

  总结了将键映射到数组中位置的方法,可以自己实现简单的哈希表。见Python ord()函数专题教程。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: