Python数据结构实战——哈希表(HashTable)
文章目录
- 1.定义哈希转换函数
- 2.定义哈希表类
- 2.1.不使用__setitem__
- 2.2.使用__setitem__
1.定义哈希转换函数
def get_hash(key):hash = 0for char in key: #遍历key的每一个charhash += ord(char) #计算所有char的ASCII值的和return hash % 100 #计算hash值
get_hash('march 6')
此处特别强调哈希值的计算过程,后面会将此函数封装到哈希表类中。
2.定义哈希表类
2.1.不使用__setitem__
class HashTable:def __init__(self):self.MAX = 10 #定义哈希表长度为10self.arr = [None for i in range(self.MAX)] #初始化hash数组全为None#获取哈希值 def get_hash(self,key): hash = 0 for char in key:hash += ord(char)return hash % self.MAX#将hash值以及对应val放入哈希表中def add(self,key,val):h = self.get_hash(key)self.arr[h] = val#通过key获得对应的val,中间用了一个哈希转换 def get(self,key):h = self.get_hash(key)return self.arr[h] #返回哈希值在arr中的值
测试:
t = HashTable() #实例化
t.add('March 1',100) #添加key、value
t.add('March 2',200)
t.add('March 3',300)
t.add('March 4',400)t.arr #打印哈希数组
t.get('March 4') #查找key对应的val
2.2.使用__setitem__
class HashTable:def __init__(self):self.MAX = 10 #定义哈希表长度为100self.arr = [None for i in range(self.MAX)] #初始化hash数组全为None#获取哈希值 def get_hash(self,key): hash = 0 for char in key:hash += ord(char)return hash % self.MAX#添加key,valuedef __setitem__(self, key, val): h =self.get_hash(key)self.arr[h] = val#通过key查valuedef __getitem__(self,key):h = self.get_hash(key)return self.arr[h]#删除某个key(在arr中将其设为None即可)def __delitem__(self,key):h = self.get_hash(key)self.arr[h] = None
测试:
t = HashTable()
t['March 1'] = 100 #添加key,value
t['March 2'] = 200
t['March 3'] = 300
t['March 4'] = 400
t['March 5'] = 500t['March 5'] #查找March 5
t['March 4'] #查找March 4
del t['March 3'] #删除March 3
t.arr #将发现March 3对应的值变成None
Python数据结构实战——哈希表(HashTable)相关推荐
- Python数据结构实战——哈希表中的冲突处理(Collision Handling In Hash Table)
文章目录 1.定义哈希类(能处理冲突) 2.测试 2.1.增加键值 2.2.查找对应键值 2.3.查看哈希表 2.4.更新值 2.5.删除键值对 1.定义哈希类(能处理冲突) class HashTa ...
- Python 数据结构之哈希表的实现
哈希表(Hash table,也叫作散列表),是根据关键码值(Key value)而直接进行访问的数据结构. 也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做 ...
- Python数据结构:哈希表
哈希 散列(哈希)是电脑科学中一种对资料的处理方法,通过某种特定的函数/算法(称为散列函数/算法)将要检索的项与用来检索的索引(称为散列,或者散列值)关联起来,生成一种便于搜索的数据结构(称为散列表) ...
- 用c语言实现基本数据结构(哈希表)
用c语言实现基本数据结构(哈希表) 写这个哈希表总是段错误,找了半天的bug...原来是各种小错误不断,写得很蛋疼. 我是是用数组实现的,数组的最大值定义成的宏.一共只有四个函数,分别为初始化哈希表, ...
- 「Redis数据结构」哈希表(Dict)
「Redis数据结构」哈希表(Dict) 文章目录 「Redis数据结构」哈希表(Dict) @[toc] 一.概述 二.结构 三.哈希冲突 四.链式哈希 五.rehash 六. 渐进式 rehash ...
- 在C#中应用哈希表(Hashtable)
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...
- 【数据结构】 哈希表 详解
目录 1. 概念 引入 2. 冲突 2.1 概念 2.2 避免 2.3 冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节(重点) 2.5 冲突-解决 2.5.1 闭散列 2.6 冲突-解决- ...
- 哈希表(hashtable)的javascript简单实现
javascript中没有像c#,java那样的哈希表(hashtable)的实现.在js中,object属性的实现就是hash表,因此只要在object上封装点方法,简单的使用obejct管理属性的 ...
- C#中哈希表(HashTable)的用法详解
1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对, ...
最新文章
- oracle em 界面乱码,oracle em 按钮乱码解决办法及em网页变成英文
- 那些年,程序员用过的行酒令
- java.lang.NoClassDefFoundError:org/apache/commons/io/Charsets (jsoup配合htmlunit 爬取异步加载的网页遇到的)
- Attribute “singleton” must be declared for element type “bean”.
- 通过nginx反向代理解决跨域
- python利用集合的无重复性_利用Python程序完成ABAQUS中的一些重复性操作
- 最简单的视音频播放示例5:OpenGL播放RGB/YUV
- 1136 A Delayed Palindrome(20 分)
- 序 - 致“正当时”
- 逗游怎么安装计算机丢失文件,原神PC版常见安装问题解决方法汇总
- Idea中的搜索快捷键
- java 网页版通讯_JavaWeb网页聊天室(WebSocket即时通讯)
- 【k8s系列5】KubernetesClientException: too old resource version 原因分析
- c语言中strcat函数的作用,strcat函数的作用是什么?
- Ubuntu18.04 双屏显示 双显卡设置
- 如何让U盘同时兼容Windows和Mac OS X系统
- Symbian 进行最后一次系统升级,塞班时代结束
- 113资讯网(www.113p.cn)评测:护卫神·主机大师 (Linux版)
- QQ总是登陆不上,显示(连接服务器超时,请重新登录,错误代码(0*00000001)
- PyTorch :YOLOv5实战
热门文章
- 魅族技术晚场回顾,算法、架构、AI之外,还要考虑未来
- 【李宏毅2020 ML/DL】P11 Logistic Regression | 由逻辑回归中的特征转换巧妙引出“神经网络”的概念
- PHP命名空间带来的干扰
- (最短路 Floyd diskstra prim)Frogger --POJ--2253
- jQuery Event.delegateTarget 属性详解
- api k8s restful 创建pods_Kind:一个容器创建K8S开发集群
- 全球通用头像gravatar介绍
- 浓缩的就是精华——ES6迭代器精炼讲解
- 运维架构师-并不遥远的彼岸
- 手机恶意软件激增,使用代码签名证书防范恶意侵害