字典的介绍

字典介绍

如果有列表

     nameList = ['xiaoZhang', 'xiaoWang', 'xiaoLi'];

需要对"xiaoWang"这个名字写错了,通过代码修改:

     nameList[1] = 'xiaoxiaoWang'

如果列表的顺序发生了变化,如下

     nameList = ['xiaoWang', 'xiaoZhang',  'xiaoLi'];

此时就需要修改下标,才能完成名字的修改

     nameList[0] = 'xiaoxiaoWang'

有没有方法,既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素呢?

答:

字典

另一个场景:

学生信息列表,每个学生信息包括学号、姓名、年龄等,如何从中找到某个学生的信息?

studens = [[1001, “王宝强”, 24], [1002, “马蓉”, 23], [1005, “宋喆”,24], …]

循环遍历? No!
<1>生活中的字典

新华字典

新华字典
<2>软件开发中的字典

变量info为字典类型:

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

说明:

字典和列表一样,也能够存储多个数据
列表中找某个元素时,是根据下标进行的
字典中找某个元素时,是根据'名字'(就是冒号:前面的那个值,例如上面代码中的'name'、'id'、'sex')
字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值

<3>根据键访问值

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

print(info['name'])
print(info['address'])

结果:

班长
地球亚洲中国北京

若访问不存在的键,则会报错:

info[‘age’]
Traceback (most recent call last):
File “”, line 1, in
KeyError: ‘age’

在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

age = info.get(‘age’)
age #’age’键不存在,所以age为None
type(age)

### Python 字典数据结构介绍 Python 中的字典(Dictionary)是一种内置的、无序的、可变的数据结构,它以键值对(Key-Value Pair)的形式存储数据,提供了高效的查找性能[^2]。字典的核心特性使其在快速查找、数据聚合、配置管理等编程场景中表现出色[^1]。 #### 字典的基本结构 字典由多个键值对组成,每个键(Key)必须是不可变的数据类型(如字符串、数字或元组),而值(Value)可以是任意类型的对象。键必须唯一,如果出现重复键,则后面的值会覆盖前面的值。 示例: ```python student_scores = {'张三': 85, '王五': 75, '小华': 89} ``` #### 创建字典 可以通过多种方式创建字典,最常见的方式是使用花括号 `{}` 或内置函数 `dict()`。 示例: ```python # 使用花括号创建 d1 = {'name': 'Alice', 'age': 25} # 使用 dict 构造函数 d2 = dict(name='Bob', age=30) # 从键值对序列创建 d3 = dict([('x', 1), ('y', 2)]) ``` #### 访问与修改字典 字典通过键来访问对应的值,语法为 `dictionary[key]`。如果键不存在,默认情况下会抛出 `KeyError`,但可以通过 `get()` 方法避免异常。 示例: ```python scores = {'张三': 85, '王五': 75} print(scores['张三']) # 输出 85 print(scores.get('李四', '不存在')) # 输出 '不存在' ``` 字典是可变结构,可以通过赋值来添加或修改键值对。 示例: ```python scores['李四'] = 90 # 添加新键值对 scores['王五'] = 80 # 修改已有键的值 ``` #### 字典的方法 字典提供了一系列内置方法用于操作数据,如获取所有键、所有值、键值对等。 - `keys()`:获取字典中所有的键[^4]。 - `values()`:获取字典中所有的值。 - `items()`:获取字典中所有的键值对(元组形式)。 示例: ```python dec = {'张三': 85, '王五': 75, '小华': 89} print(list(dec.keys())) # ['张三', '王五', '小华'] print(list(dec.values())) # [85, 75, 89] print(list(dec.items())) # [('张三', 85), ('王五', 75), ('小华', 89)] ``` #### 字典的查找效率 字典的内部实现基于哈希表(Hash Table),因此在大多数情况下,插入、查找和删除操作的时间复杂度接近于 O(1),即常数时间复杂度。这使得字典在处理大量数据时具有显著优势[^1]。 #### 字典的应用场景 - 存储和管理配置信息(如应用程序设置)。 - 实现快速查找表(如电话簿、用户名到ID的映射)。 - 数据聚合(如统计词频、计数)。 - 构建更复杂的数据结构,如图的邻接表表示。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值