python学习笔记3——字典-当索引行不通时

本文深入探讨了Python字典的用途、创建方式及基本操作,包括使用dict函数、字典的增删改查、成员资格检查等。同时,介绍了字典方法如clear、copy、fromkeys、get、items、keys、pop、values、popitem的功能和用法。

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

需要将一系列值组合成数据结构并通过编号来访问各个值时,列表很有用。当通过名称来访问其各个值的时候,此时的数据结构称为映射(mapping)。字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键可能是数、字符串或元组。

1. 字典的用途

  • 下面是Python字典的一些用途:

❑ 表示棋盘的状态,其中每个键都是由坐标组成的元组;

❑ 存储文件修改时间,其中的键为文件名;

❑ 数字电话/地址簿。

2. 创建和使用字典

>>> phonebook={'Alice':'1111', 'beth':'2222', 'Cecil':'3528'}

字典由键及其相应的值组成,这种键-值对称为项(item)。在上面的示例中,键为名字,而值为电话号码。每个键与其值之间都用冒号(:)分隔,项之间用逗号分隔,而整个字典放在花括号内。

2.1 函数dict

使用函数dict[插图]从其他映射(如其他字典)或键-值对序列创建字典。

>>> item = [('name', 'Gumby'), ('age', 42)]
>>> d = dict(item)
>>> d
{'name': 'Gumby', 'age': 42}

还可使用关键字实参来调用这个函数

>>> d = dict(name ='gumb;y', age = 42)
>>> d
{'name': 'gumb;y', 'age': 42}

2.2 字典的基本操作

字典的基本行为在很多方面都类似于序列。

❑ len(d)返回字典d包含的项(键-值对)数。

❑ d[k]返回与键k相关联的值。

❑ d[k] = v将值v关联到键k。

❑ del d[k]删除键为k的项。

❑ k in d检查字典d是否包含键为k的项。

虽然字典和列表有多个相同之处,但也有一些重要的不同之处。

❑ 键的类型:字典中的键可以是整数,但并非必须是整数。字典中的键可以是任何不可变的类型,如浮点数(实数)、字符串或元组。

自动添加:即便是字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项。然而,如果不使用append或其他类似的方法,就不能给列表中没有的元素赋值。

>>> d[3] = 'sunhao'
>>> d
{3: 'sunhao'}

❑ 成员资格:表达式k in d(其中d是一个字典)查找的是键而不是值,而表达式v in l(其中l是一个列表)查找的是值而不是索引。这看似不太一致,但你习惯后就会觉得相当自然。毕竟如果字典包含指定的键,检查相应的值就很容易。

示例:以任命用作键的字典,字典种包含键phone和addr,分别与电话号码相关联。

2.3  将字符串格式设置功能用于字典

2.3.1. format_map()方法:

format_map()方法:类似 str.format(*args, **kwargs) ,不同的是 mapping 是一个字典对象。

语法:format_map(mapping)

参数:mapping 是一个字典对象

返回值:针对字典类型的格式化后的新的对象

>>> People = {'name':'sunhao', 'age':'26'}
>>> print('My name is {name}, and I\'m {age} years old'.format_map(People))
My name is sunhao, and I'm 26 years old

2.4 字典方法

2.4.1 clear  删除所有的字典项

celar 方法清空字典和 赋值空字典清空字典的区别

>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key': 'value'}
>>> x = {}
>>> y
{'key': 'value'}
>>> # 使用clear删除字典
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> x.clear()
>>> y
{}

 

2.4.2  copy

方法copy返回一个新字典,其包含的键-值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而非副本)

浅复制和深复制的区别。

2.4.3. fromkeys——方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。

>>> {}.fromkeys(['name', 'age'])
{'name': None, 'age': None}
>>> #这个示例首先创建了一个空字典,再对其调用方法fromkeys来创建另一个字典
>>> #这显得有点多余,可以直接对dict((dict是所有字典所属的类型。类和类型将在第7章详细讨论)调用方法fromkeys。
>>> dict.fromkeys(['name', 'age'])
{'name': None, 'age': None}

2.3.4 get

方法get为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发错误。

>>> d = {}
>>> print(d['name']
... )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'name'

而使用get不会这样:

>>> d = {}
>>> print(d.get('name'))
None

使用get来访问不存在的键时,没有引发异常,而是返回None。你可指定“默认”值,这样将返回你指定的值而不是None。

>>> d = {}
>>> print(d.get('name', 'N/A'))
N/A

2.3.5 items——方法items返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排列顺序不确定。

2.3.6 keys——方法keys返回一个字典视图,其中包含指定字典中的键。

2.3.7 pop——方法pop可用于获取与指定键相关联的值,并将该键-值对从字典中删除。

2.3.8 value——返回一个由字典中的值组成的字典视图。不同于方法keys,方法values返回的视图可能包含重复的值。

2.3.9 popitem——返回并删除字典中的最后一对键和值。

如果字典已经为空,却调用了此方法,就报出 KeyError 异常。

参数:无

返回值:返回一个键值对(key,value)形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值