首页 > 编程语言 >Udemy——Python数据结构与算法(9)

Udemy——Python数据结构与算法(9)

时间:2025-01-05 20:29:53浏览次数:3  
标签:map hash Python data self Udemy table 数据结构 my

  课程:【Udemy高分付费课程】Python数据结构与算法 - 终极 Python 编码面试和计算机科学训练营(中英文字幕)_哔哩哔哩_bilibili

哈希表HashTable

通过将键(Key)映射到表中一个位置来访问记录,以加快查找速度。简单来说,它就像一个“字典”,你可以通过一个“索引”(键)快速找到对应的内容(值)。

基础代码

class HashTable:
    def __init__(self,size=7):
        self.data_map=[None]*size
    def __hash(self,key):
        my_hash=0
        for letter in key:
            my_hash=(my_hash+ord(letter)*23)%len(self.data_map)
        return my_hash
    def print_table(self):
        for i,val in enumerate(self.data_map):
            print(i,":",val)

添加设置   set_item

set_item(self,key,value):
        index=self.__hash(key)
        if self.data_map[index]==None:
            self.data_map[index]=[]
        self.data_map[index].append([key,value])


my_hash_table=HashTable()

my_hash_table.set_item("bolts",1400)
my_hash_table.set_item("washers",50)
my_hash_table.set_item("lumber",70)

my_hash_table.print_table()

效果

查找 get_item

    def get_item(self,key):
        index=self.__hash(key)
        if self.data_map[index] is not None:
            for i in range(len(self.data_map[index])):
                if self.data_map[index][i][0]==key:    #第index索引里的第i个键值对的第0位 是否等于 在搜索的key
                    return self.data_map[index][i][1]  #返回第index索引里的第i个键值对的第1位 也就是数值value
        return None






my_hash_table=HashTable()

my_hash_table.set_item("bolts",1400)
my_hash_table.set_item("washers",50)

print(my_hash_table.get_item("bolts"))
print(my_hash_table.get_item("washers"))
print(my_hash_table.get_item("lumber"))

查询键 keys

    def keys(self):
        all_keys=[]
        for i in range(len(self.data_map)):
            if self.data_map[i] is not None:
                for j in range(len(self.data_map[i])):
                    all_keys.append(self.data_map[i][j][0])
        return all_keys


my_hash_table=HashTable()

my_hash_table.set_item("bolts",1400)
my_hash_table.set_item("washers",50)
my_hash_table.set_item("lumber",70)

print(my_hash_table.keys())

完整代码

class HashTable:
    def __init__(self,size=7):
        self.data_map=[None]*size
    def __hash(self,key):
        my_hash=0
        for letter in key:
            my_hash=(my_hash+ord(letter)*23)%len(self.data_map)
        return my_hash
    def print_table(self):
        for i,val in enumerate(self.data_map):
            print(i,":",val)
    def set_item(self,key,value):
        index=self.__hash(key)
        if self.data_map[index]==None:
            self.data_map[index]=[]
        self.data_map[index].append([key,value])
    def get_item(self,key):
        index=self.__hash(key)
        if self.data_map[index] is not None:
            for i in range(len(self.data_map[index])):
                if self.data_map[index][i][0]==key:    #第index索引里的第i个键值对的第0位 是否等于 在搜索的key
                    return self.data_map[index][i][1]  #返回第index索引里的第i个键值对的第1位 也就是数值value
        return None
    def keys(self):
        all_keys=[]
        for i in range(len(self.data_map)):
            if self.data_map[i] is not None:
                for j in range(len(self.data_map[i])):
                    all_keys.append(self.data_map[i][j][0])
        return all_keys


my_hash_table=HashTable()

my_hash_table.set_item("bolts",1400)
my_hash_table.set_item("washers",50)
my_hash_table.set_item("lumber",70)

print(my_hash_table.keys())
#my_hash_table.print_table()

标签:map,hash,Python,data,self,Udemy,table,数据结构,my
From: https://blog.csdn.net/Copomelo249/article/details/144837901

相关文章

  • 分享一个音乐爬虫的python源码
    爬虫源码和打包后的EXE文件放在网盘了,可直接下载功能特点:-支持多个音乐源: -酷狗音乐 -QQ音乐 -咪咕音乐 -网易云音乐 -酷我音乐 -5sing音乐 -千千音乐-搜索功能: -按歌手搜索 -按歌曲名搜索(支持模糊匹配) -支持多关键词组合......
  • 精通Python (3)
    该章节主要讲述 分支结构一,应用场景迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后,我们要根据玩家得到分数......
  • 精通Python (4)
    本章节讲述循环结构一,应用场景我们在写程序的时候,一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中,让机器人向球门方向移动就是一个需要重......
  • Python入门教程 —— 模块和包
    1.导入模块Python中的模块在Python中有一个概念叫做模块(module)。说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块。比如我们经常使用工具random,就是一个模块。使用importrandom导入工具之后,就可以使用random的函数。导入模......
  • Python学习(五)——配套《PyTorch深度学习实战》
    1.Python的流程控制tips:我使用的Python3.9版本,if、else是要加:的Python的流程控制主要通过条件语句和循环语句来实现,它们允许程序根据特定的条件执行不同的代码块。以下是Python中常用的流程控制结构:条件语句(if-elif-else)条件语句允许程序根据条件的真假来选择执行不同的代......
  • 基于Python+flask的豆瓣音乐聚类分析可视化
    一、项目概述项目名称:豆瓣音乐聚类分析可视化项目简介:该项目基于Flask框架开发,用于提供音乐数据分析与可视化功能,涉及用户管理、音乐数据爬取、聚类分析及其可视化展示。系统包含用户和管理员角色,提供丰富的页面功能。主要功能:用户登录与注册音乐数据展示与搜索管理......
  • 基于Python+flask的电影数据可视化分析
    项目概述该项目基于Python的Flask框架开发,用于电影数据的分析与可视化,主要功能包括用户管理、数据采集与分析、可视化展示。运行环境开发语言:Python3.8+主要依赖库:Flask(Web框架)PyMySQL(数据库连接)BeautifulSoup(HTML解析)Jieba/NLTK/SnowNLP(自然语言处理)W......
  • Python数据结构与算法分析 第3版PDF、EPUB免费下载
    适读人群:1.希望学习数据结构和算法的Python用户;2.计算机专业的学生和老师。只有洞彻数据结构与算法,才能真正精通Python!热门计算机科学教材,华盛顿大学、北京大学等多家高校采用,让你在代码编写的战场上所向披靡!电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版......
  • [数据结构学习笔记4] 堆栈(Stack)
    堆栈,我们总是把新的数据加在堆栈的最顶端,移除的时候也是从最顶端开始移除。也叫LIFO(lastinfirstout)。代码实现(javascript)classStack{constructor(...items){this.items=items;}clear(){this.items.length=0;}clon......
  • python毕设 体检套餐定制系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于体检套餐定制系统的研究,现有研究主要集中在体检系统的基础功能实现方面,如单纯的预约或报告查询等1。专门针对根据不同用户(包含不......