Python 基础学习06:字典
通过名称来访问其各个值的数据结构称为映射(mapping),映射中的值不按顺序排序,而是存储在 key 中,key 可以是数字、字符串、元组。在 Python 中字典(dict)是唯一的内置映射类型。
字典
字典这种数据结构不像列表是有序的,字典是无序的,意味着能够通过指定的 key 来快速访问到对应的 value。
创建和使用字典
字典由键和对应的值组成,这种键值对称为项(item),键值之间使用冒号(:)分隔,项目之间使用逗号(,),整个字典放在花括号内。
在映射类型中,键必须为唯一。
类 dict
Python 提供了内置的 dict 类,借助 dict 可以方便的创建字典。
1 | items = [('name', 'imxcai'), ('blog', 'www.imxcai.com')] |
也可以通过关键字实参来调用函数:
1 | d = dict(name='imxcai', blog='www.imxcai.com') |
直接调用 dict 将返回一个空字典。
字典的基本操作
映射的基本操作类似于序列:
len(d)返回字典d包含项的个数(长度)d[k]返回与键k项关联的值d[k]=v将值v关联到键kdel d[k]删除键为k的项k in d检查字典d中是否包含键为k的项
与序列的不同之处有:
- 键的类型:字典中的键可以是任何不可变的类型,如浮点数、字符串或元组
- 自动添加:即便是字典中没有的键也可以赋值,会创建对应的新项
- 成员资格:成员资格查找的是键而不是值
将字符格式用于字典
在字典中存储一系列命名的值,可让格式设置更加容易,通过使用 format_map 来指定映射来提供所需的数据。
1 | temp = "Hello, I'm {name}, my blog is {blog}" |
字典方法
与列表、字符串一样,字典也有内置方法。
clear
clear 删除字典中所有的项:
1 | info |
copy 与 deepcopy
copy 返回一个新的字典,项与源字典相同,但值本身是原件而非创建的副本,这种方式称为“浅复制”。
1 | a = {'user': 'admin', 'operator':['add', 'del', 'remove', 'copy']} |
上述字典中列表在 b 上删除后也影响到了 a,因为值本身是原件。
deepcopy 深复制,可解决此问题:
1 | from copy import deepcopy |
fromkeys
fromkeys 创建新字段,包含指定的键,但每个键对应的值为 None。
1 | {}.fromkeys(['name', 'age']) |
也可以指定默认的只:
1 | {}.fromkeys(['name', 'age'], 'NULL') |
get
get 用于获取字典中指定键的值,如果字典中不存在指定的键,不会返回错误:
1 | a = {'name': 'imxcai', 'blog': 'www.imxcai.com'} |
items
items 返回包含所有字典项的列表,每个元素都以 (key, value) 的形式构成,返回的列表顺序是不确定的。
1 | a = {'name': 'imxcai', 'blog': 'www.imxcai.com'} |
返回的值是一种名为字典视图的特殊类型,可以进行迭代,也可以确定长度和执行成员资格的检查:
1 | a = {'name': 'imxcai', 'blog': 'www.imxcai.com'} |
将字典视图复制到列表中:
1 | list(a.items()) |
keys
kyes 返回字典的 key 视图:
1 | a.keys() |
values
values 返回字典的 values 视图,在字典中 value 是不唯一的,所以返回的可能会存在重复的值:
1 | a = {}.fromkeys([1,2,3]) |
pop
pop 通过指定键来删除对应的项:
1 | a = {'name': 'imxcai', 'blog': 'www.imxcai.com'} |
popitem 随机在字典中删除一个项:
1 | a = {'name': 'imxcai', 'blog': 'www.imxcai.com'} |
setdefault
类似与 get,当字典中不存在指定的键时,将添加指定的键:
1 | a = {'name': 'imxcai', 'blog': 'www.imxcai.com'} |
update
update 可用一个字典中的项来更新另一个字典:
1 | a = {'name': 'imxcai', 'blog': 'www.imxcai.com'} |
评论· · · · · ·