【书山有路】Python基础教程 第4章

本章的主要内容是“字典”。字典是一种通过名字引用值的数据结构。这种结构类型被称为“映射”。字典是Python中唯一内建的映射类型。字典中的值并没有特殊的顺序,但都存储在一个特定的键(key)里面。键可以是数字、字符串甚至是元组。

经验做法

  • 电话号码(以及其他可能以0开头的数字)应该表示为数字字符串而不是整数。

创建字典

可以使用下面的方式创建字典:

phonebook = {'Alice':'2314', 'Beth': '9102', 'Cecil': '3258'}

字典由多个键以及其对应的值构成的对组成。每个键和它的值之间用冒号隔开。项之间用逗号隔开。而整个字典是由一对大括号括起来。

字典函数

dict函数

可以用dict函数通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典。

使用下面的代码:

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

dict函数也可以通过关键字参数来创建字典。

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

基本字典操作

  • len(d),返回字典中项的数量
  • del d[k],删除键为k的项
  • k in d 检查d中是否含有键为k的项

字典的格式化字符串

可以在每个转换说明符的%字符后面加上用圆括号括起来的键,然后后面跟上其他说明元素来格式化字符串。

使用下面的代码:

>>> phonebook = {'Alice':'2314', 'Beth': '9102', 'Cecil': '3258'}
>>> "Cecil's phone number  is %(Cecil)s." % phonebook
"Cecil's phone number  is 3258."

字典方法

字典的方法用的不太多。所以只列出常用的方法和说明,示例代码就不写了。

clear方法

clear方法清除字典中所有的项。修改字典本身,所以无返回值。

copy方法

copy方法返回一个具有相同键值对的新字典。对于值来说实现的是浅复制。

如果想使用深复制,可以使用copy模块中的deepcopy函数来完成。

参考下面的代码:

>>> from copy import deepcopy
>>> d = {}
>>> d['names'] = ['Alfred', 'Bertrand']
>>> c = d.copy()
>>> dc = deepcopy(c)
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'names': ['Alfred', 'Bertrand']}

get方法

get方法在取dict的值的时候,如果指定的key不存在,不会出错。

items方法

items方法将所有的字典项以列表方式返回。包含键-值。

使用下面的代码:

>>> phonebook.items()
dict_items([('Beth', '9102'), ('Alice', '2314'), ('Cecil', '3258')])

keys方法

keys方法将字典中的键以列表的响声返回。

使用下面的代码:

>>> phonebook.keys()
dict_keys(['Beth', 'Alice', 'Cecil'])

pop方法

pop方法用于获取一个指定key的值,然后将这一项从dict中移除。

使用下面的代码:

d.pop(x)

update方法

update方法可以利用一个字典中的项更新另一个字典。即如果新字典中存在原字典不存在的项,则加入。新字典中存在原字典中已存在的项,则更新。其他不变。

使用下面的代码:

>>> d = {'a':'1'}
>>> new_d = {'a':'2','b':'3'}
>>> d.update(new_d)
>>> d
{'a': '2', 'b': '3'}

values方法

values方法以列表的形式返回字典中的值。可以包含重复的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值