一文详解Python中哈希表的使用

一文详解Python中哈希表的使用

什么是哈希表

哈希表也称为散列表,是一种用于存储键值对的数据结构。在哈希表中,每个键都与一个特定的值相关联。哈希表使用哈希函数将键映射到存储桶中,以便快速访问键对应的值。

Python中的哈希表实现在内部使用了散列表。Python的“字典”数据类型就是基于哈希表实现的,也称为dict。字典的键必须是不可变类型,例如数字、字符串和元组。更改键(例如在字典中使用列表作为键)将导致 TypeError 错误。

如何使用哈希表

创建哈希表

在Python中,可以使用花括号或dict()构造函数创建一个字典,这个字典就是一个哈希表。

# 创建一个空的字典
my_dict = {}
print(my_dict)

# 创建一个带有键值对的字典
my_dict = {'name': 'Lily', 'age': 18, 'city': 'Beijing'}
print(my_dict)

# 使用dict()构造函数创建字典
my_dict = dict(name='Lucy', age=20, city='Shanghai')
print(my_dict)

输出:

{}
{'name': 'Lily', 'age': 18, 'city': 'Beijing'}
{'name': 'Lucy', 'age': 20, 'city': 'Shanghai'}

访问哈希表

可以使用字典的键访问对应的值。如果字典中不存在指定的键,则会引发 KeyError 异常。

my_dict = {'name': 'Lily', 'age': 18, 'city': 'Beijing'}

# 访问字典中的键值
print(my_dict['name'])
print(my_dict['age'])
print(my_dict['city'])

# 访问不存在的键
print(my_dict['gender'])

输出:

Lily
18
Beijing
KeyError: 'gender'

可以使用 get() 方法来访问字典中的键值,如果字典中不存在指定的键,则返回默认值 None 或传入的值。

my_dict = {'name': 'Lily', 'age': 18, 'city': 'Beijing'}

# 使用get()方法访问字典中的键值
print(my_dict.get('name'))
print(my_dict.get('age'))
print(my_dict.get('city'))
print(my_dict.get('gender'))  # None

# 使用get()方法访问不存在的键
print(my_dict.get('gender', 'unknown'))

输出:

Lily
18
Beijing
None
unknown

修改哈希表

可以通过键访问到字典的值,并进行修改。

my_dict = {'name': 'Lily', 'age': 18, 'city': 'Beijing'}

# 修改字典中的键值
my_dict['age'] = 19
print(my_dict)

# 添加新的键值对
my_dict['gender'] = 'female'
print(my_dict)

输出:

{'name': 'Lily', 'age': 19, 'city': 'Beijing'}
{'name': 'Lily', 'age': 19, 'city': 'Beijing', 'gender': 'female'}

删除哈希表

可以使用 del 关键字删除字典中的键值对。

my_dict = {'name': 'Lily', 'age': 18, 'city': 'Beijing'}

# 删除字典中的键值对
del my_dict['age']
print(my_dict)

# 清空整个字典
my_dict.clear()
print(my_dict)

输出:

{'name': 'Lily', 'city': 'Beijing'}
{}

总结

哈希表是一种强大的数据结构,在Python中常用的字典类型就是基于哈希表实现的。我们可以使用花括号或dict()构造函数创建一个字典,使用键访问对应的值,并进行修改和删除。

示例一:使用哈希表存储学生信息

# 创建一个学生字典
stu_dict = {'ID001': {'name': 'Lily', 'age': 18, 'city': 'Beijing'},
            'ID002': {'name': 'Lucy', 'age': 20, 'city': 'Shanghai'},
            'ID003': {'name': 'Tom', 'age': 19, 'city': 'Guangzhou'}}
print(stu_dict)

# 修改学生信息
stu_dict['ID001']['age'] = 19
print(stu_dict)

# 删除学生信息
del stu_dict['ID003']
print(stu_dict)

输出:

{'ID001': {'name': 'Lily', 'age': 18, 'city': 'Beijing'},
 'ID002': {'name': 'Lucy', 'age': 20, 'city': 'Shanghai'},
 'ID003': {'name': 'Tom', 'age': 19, 'city': 'Guangzhou'}}
{'ID001': {'name': 'Lily', 'age': 19, 'city': 'Beijing'},
 'ID002': {'name': 'Lucy', 'age': 20, 'city': 'Shanghai'},
 'ID003': {'name': 'Tom', 'age': 19, 'city': 'Guangzhou'}}
{'ID001': {'name': 'Lily', 'age': 19, 'city': 'Beijing'},
 'ID002': {'name': 'Lucy', 'age': 20, 'city': 'Shanghai'}}

示例二:使用哈希表存储公司货物信息

# 创建一个货物字典
goods_dict = {'ID001': {'name': 'computer', 'price': 6000, 'quantity': 10},
              'ID002': {'name': 'phone', 'price': 2000, 'quantity': 20},
              'ID003': {'name': 'watch', 'price': 8000, 'quantity': 5}}
print(goods_dict)

# 修改货物信息
goods_dict['ID002']['quantity'] = 30
print(goods_dict)

# 添加新的货物信息
goods_dict['ID004'] = {'name': 'book', 'price': 50, 'quantity': 100}
print(goods_dict)

输出:

{'ID001': {'name': 'computer', 'price': 6000, 'quantity': 10},
 'ID002': {'name': 'phone', 'price': 2000, 'quantity': 20},
 'ID003': {'name': 'watch', 'price': 8000, 'quantity': 5}}
{'ID001': {'name': 'computer', 'price': 6000, 'quantity': 10},
 'ID002': {'name': 'phone', 'price': 2000, 'quantity': 30},
 'ID003': {'name': 'watch', 'price': 8000, 'quantity': 5}}
{'ID001': {'name': 'computer', 'price': 6000, 'quantity': 10},
 'ID002': {'name': 'phone', 'price': 2000, 'quantity': 30},
 'ID003': {'name': 'watch', 'price': 8000, 'quantity': 5},
 'ID004': {'name': 'book', 'price': 50, 'quantity': 100}}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文详解Python中哈希表的使用 - Python技术站

(1)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 在Python中利用Into包整洁地进行数据迁移的教程

    当然,我很乐意为您提供“在Python中利用Intake包整洁地进行数据迁移的教程”的完整攻略。以下是详细步骤和示例。 Intake包的概述 Intake是一个Python包,用于管理和加载数据集。它提供了一个统一的接口,可以轻松地加载各种数据源,包括本地文件、远程文件、数据库和API。Intake还提供了一种简单的方法来定义数据集的元数据,包括数据集名称、…

    python 2023年5月13日
    00
  • python 正则表达式如何实现重叠匹配

    以下是“Python正则表达式如何实现重叠匹配”的完整攻略: 一、问题描述 在Python中,正则表达式是一种用于匹配和处理文本的强大工具。在某些情况下,我们需要实现重叠匹配,即在字符串中匹配多个重叠的子字符串。本文将详细讲解Python正则表达式如何实现重叠匹配,以及如何在实际开发中应用。 二、解决方案 2.1 实现重叠匹配的方法 在Python中,实现重…

    python 2023年5月14日
    00
  • Python天气预报采集器实现代码(网页爬虫)

    下面我将详细讲解如何实现一个Python天气预报采集器。 1. 爬取目标网站 首先,我们需要先确定一个目标网站,在这里我们以“中国天气网”(http://www.weather.com.cn)为例。 2. 分析网站结构 接着,我们需要分析该网站的结构,找到我们需要爬取的信息所在的位置和格式。可以打开浏览器的开发者工具,在Network标签页下查看网页请求,找…

    python 2023年6月3日
    00
  • Python UnboundLocalError和NameError错误根源案例解析

    下面我来详细讲解一下“Python UnboundLocalError和NameError错误根源案例解析”的完整攻略。 1. UnboundLocalError错误 1.1 错误描述 当尝试在一个函数内部对一个局部变量进行赋值时,在函数定义之前没有声明该局部变量,就会引发UnboundLocalError错误。 1.2 错误示例 def my_functi…

    python 2023年5月13日
    00
  • 在 Python 中为 SCIP 安装错误

    【问题标题】:Installing error for SCIP in Python在 Python 中为 SCIP 安装错误 【发布时间】:2023-04-05 16:47:01 【问题描述】: 我在 Windows 7 上使用 python 3 并尝试在其上安装 SCIP。请看图片。我想运行一个混合整数程序。 SCIP 任何进一步的说明都会有所帮助。 我…

    Python开发 2023年4月5日
    00
  • Python中的函数作用域

    当我们在Python中定义一个函数时,函数内部所声明的变量将受到作用域的限制。Python中的函数作用域可以分为两种:全局作用域和局部作用域。 全局作用域 在函数外部声明的变量拥有全局作用域,也就是说,它们可以在程序的任何地方被访问,并且可以在函数内部被修改。例如: x = 10 def func(): global x x += 5 print(f&quo…

    python 2023年6月5日
    00
  • 一文带你了解Python协程的详细解释以及例子

    一文带你了解Python协程的详细解释以及例子 什么是协程 协程是一种用户态的轻量级线程,与操作系统线程不同,协程并不受操作系统调度,而是由用户自己调度。协程可以让多个任务在同一线程中交替执行,从而避免了线程切换的开销和死锁等问题。 Python中实现协程的两种方式 1. 生成器协程 使用生成器实现协程是Python最早的协程实现方式。其基本思路是使用yie…

    python 2023年6月3日
    00
  • python实现五子棋程序

    下面是详细讲解Python实现五子棋程序的完整攻略: 确定需求 在实现五子棋之前,需要确定程序的具体需求,包括但不限于游戏规则、棋盘大小、输出方式等。在本攻略中,我们假设五子棋程序的具体需求如下: 游戏规则:使用标准的五子棋规则进行游戏,先连成五颗棋子的玩家获胜; 棋盘大小:默认棋盘大小为 15×15,玩家可以通过参数调整棋盘大小; 输出方式:使用字符画的方…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部