Python基础教程(第三版)读书笔记(4)

字典

之前学的列表、元组和字符串都属于序列,都是有序的容器。今天我们学的是另外一种类型的容器映射,也可以叫字典(类似于散列表的一种数据结构)。为什么叫字典呢?因为它的使用方法就像字典一样,查询词语、获得词义。
Python中字典是一些**项(键——值)**组成。其中键和值中间用冒号(:)分隔,项之间用逗号分隔。整个字典放在花括号内。

字典中,键必须是独一无二的,而字典中的值无须如此

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

函数dict

创建字典可以用dict函数,可以使用其他字典中创建字典,也可以使用关键字实参来调用这个函数。

关键字实参:以param = value的方式传递数据

使用方法如下:

>>> items = [('name', 'Gumby'), ('age', 42)]
>>> d = dict(items)
>>> d
{'name': 'Gumby', 'age': 42}
>>> # 上面是使用其他字典
>>> # 使用关键字实参来创建
>>> d = dict(name='Gumby', age=24)
>>> d['name']

基本的字典操作

  • len(d)返回字典d包含的项(键-值对)数。
  • d[k]返回与键k相关的值。
  • d[k] = v将值v关联到键k。
  • del d[k]删除键为k的项。
  • k in d检查字典d是否包含键为k的项。
    除了这些基本操作以外,字典有一些和列表不同的特点(重要)。
  • 键的类型: 字典中的键可以是整数,但并非必须是整数。字典中的键可以是任何不可变的类型,如浮点数(实数)、字符串或元组。
  • 自动添加: 即便是字典中原本没有的键, 也可以给它赋值。这将在字典中创建一个新项。如果不使用append或其他类似的方法,就不能给列表中没有的元素赋值。区别如下列所示。
  • 成员资格: 表达式k in d(其中d是一个字典)查找的是键而不是值,而表达式v in l (其中l是一个列表)查找的是值不是索引。
>>> x = []
>>> x[42] = 'foobar'
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    x[42] = 'foobar'
IndexError: list assignment index out of range
>>> x = {}
>>> x[42] = 'foobar'
>>> x
{42: 'foobar'}

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

字典也可以使用格式设置功能,只要使用format_map来指出你将通过一个映射来提供所需的信息。

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

字典方法

字典也有很多方法,下面大致列举一下。

方法 含义
clear 删除所有的字典项(就地执行
copy 返回一个新字典(这个方法执行的是浅复制,因为值本身是原件,而非副本)
fromkeys 创建一个新字典,其中包含指定的键,且每个键对应的值都是None。
get 访问字典时,若没有则返回None,也可返回指定的串。
items 返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项的在列表中的排列顺序不确定。
keys 返回一个字典视图,其中包含指定字典中的键。
pop 用于获取于指定键相关联的值,并将该键-值对从字典中删除。
popitem 随机弹出一个字典项。
setdefault 获取于指定键相关联的值,但是如果没有指定的键时,在字典中添加指定的键-值对。
update 使用一个字典的项来更新另一个字典。
values 返回一个由字典中的值组成的字典视图。(可能会有重复的值)

小结

学习到的新函数

函数 描述
dict(seq) 从键-值对、映射或关键字参数创建字典。
发布了14 篇原创文章 · 获赞 8 · 访问量 228

猜你喜欢

转载自blog.csdn.net/weixin_43582715/article/details/103973077