12、Python 数据结构与编程技巧深度解析

Python 数据结构与编程技巧深度解析

1. 字典相关知识

字典在 Python 中是一种非常重要的数据结构,它可以将键映射到对应的值。在表示字典时,通常用一个上方标有 dict 的盒子来表示,盒子内部包含键值对。如果值是整数、浮点数或字符串,一般会将它们画在盒子内;而列表通常画在盒子外,以简化图表。

需要注意的是,列表可以作为字典的值,但不能作为键。例如:

t = [1, 2, 3]
d = dict()
d[t] = 'oops'

运行上述代码会报错,错误信息为 TypeError: list objects are unhashable 。这是因为字典是通过哈希表实现的,键必须是可哈希的。哈希函数可以将任意类型的值转换为整数,字典使用这些整数(哈希值)来存储和查找键值对。如果键是可变的(如列表),就会出现问题。当创建键值对时,Python 会对键进行哈希并存储在相应位置,但如果修改了键再进行哈希,它会指向不同的位置,导致字典无法正常工作。

为了绕过这个限制,最简单的方法是使用元组,后续会详细介绍元组。此外,由于字典是可变的,它不能作为键,但可以作为值。

下面是一些与字典相关的练习:
- 练习 11.5 :阅读字典方法 setdefault 的文档,并使用它编写一个更简洁的 invert_dict 版本。
- 练习 11.8

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值