python dict 底层数据结构_Python数据结构之三——dict(字典)

本文深入讲解了Python中字典的基本概念、创建与操作方法,包括添加、删除、修改及查找等核心功能,并探讨了字典在提高数据处理效率方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

知识源于生活。Python也是如此。

提到字典,我首先想到的是数学大师——高斯。

为何想起他呢?这主要是因为高斯算法嘛。计算1+2+3+...+100,一般人都会从1一直加到100,而高斯却另辟蹊径,找到规律,从而发现“高斯算法”。高斯算法极大地提高运算效率。对于Python中的字典,它与高斯算法异曲同工,同样能提高键值对的查找效率。

映射(mapping):通过名字来引用值的数据结构。

字典是Python中唯一内建的映射类型。字典的键值对(Key-Values),键是不可变的,可以为字符串、数字(int、float......)、元组等等。

字典中的键是唯一的,而值却可以相同。

Python格式如下:

1 phone = {'Jack':'0571','James':'7856','Paul':'2364'} #大括号,且键值对之间用冒号(:)隔开

注:对于上面的代码,可能有读者会疑问:为什么用字符串表示电话号码呢?

主要是考虑以“0”开头的电话号码。定义电话号码时,以“0”开头会显示错误(Error)。因此,为了考虑周全,字典中电话号码应表示为数字字符串,而不是整数。

图1 电话号码错误示例

1.创建字典和访问元素

创建方式如下:

d = {'a':'97','b':'98','c':'99','c':'101'}print(d)

d['a']

'97'

注:字典中即使键相同,也只会输出其中一个(若Key相同,后面的值(Value)会把前面的覆盖掉)。

2.添加元素

字典没有insert()方法,但依然能够添加元素。

d = {'a':'98','b':'99','c':'100'}

d['d'] = '101'

print(d)

3.删除元素

字典中删除元素,使用pop()方法。pop()方法用于获得对应于给定键的值,并将该键值对从字典中移除。

d ={‘a':'97','b':'98','c':'99'}

d.pop('b')'98'

print(d)

{‘a':'97','c':'99'}

注:除了pop()方法,还可以使用del方法

4.修改元素

字典中的元素如何修改呢?很简单,直接通过Key修改Value。

d ={‘a':'97','b':'98','c':'99'}

d['b'] = '200'

print(d['b'])'200'

print(d)

d={‘a':'97','b':'200','c':'99'}

5.查找元素

字典中查找元素与修改元素类似,也是通过Key来查找字典中的Value。

d ={‘a':'97','b':'98','c':'99'}

d['b']'98'd['c']'99'

如果字典中没有该Key时,dict会报错。

图2 错误提示(KeyError)

如何避免Key不存在的错误呢?

1.通过k in d,判断Key是否在dict中:

‘a’ ind

True'f' ind

False

2.get()方法用于更宽松的访问字典项的方法。如果Key不存在,使用get()没有任何异常,仅仅返回None值:

图3 get()方法示例

注:通过d.get('f','120')并不能往字典d ={}中添加键-值对。

6.字典基本操作总结

♦len(d):返回d中键-值对的数量;

♦d[k]:返回关联到键K上的值(Value);

♦d[k] = V:将值V关联到将K上;

♦del d[k]:删除键为K的项;

♦K in d:检查d中是否含有键K的元素;

♦键K类型:字符串、数字或元组,符合条件的不可变类型均可;

♦字典格式化字符串:%(Jack)s %(phone)。【其中Jack为键,而phone为dict{}】

其实,元组不一定可以用于dict的键(Key):

d ={‘a':'97','b':'98','c':'99'}

d[(1,2,3,4,5,6)] = '121'

print(d)

d={‘a':'97','b':'98','c':'99',(1,2,3,4,5,6):'121'}

d[(1,2,[1,2,3])] = '188'Traceback (most recent call last):

File"", line 1, in TypeError: unhashable type:'list'

注:如果元组用于键,元组中不能含有可变内容list,否则编译错误。

字典总结:

1.字典中元素必须以键值对的形式出现;

2.字典中的键必须是不可变的,可以是字符串、数字以及元组,并且无法修改;

3.Key是唯一的,不可重复,而Value可以重复;

4.字典查找和插入元素极快,并不会随着Key增加而减慢;

5.字典占用内存大,以空间换取时间;

6.特别地,当tuple作为字典中的键(Key)时,tuple中不能包含list,否则编译错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值