Python 字典

如果需要将一组值组合成一个数据结构,并通过下标(或编号)来访问各个值,那么列表会很有用。本章将介绍一种可通过名称来访问其各个值的数据结构,这种数据结构称为 “映射(mapping)”。

字典是 Python 中唯一的内置映射类型,它的值不按顺序排列,而是存储在对应的名称下面。

Python 字典的定义

字典,顾名思义就是一种类似于《英汉字典》那样的数据结构。如果使用《英汉字典》,我们可以通过单词找到对应的汉语解释。而使用 Python 中的字典,我们可以通过 “键”(key)来查找 “值”(value)。

Python 字典

举个简单例子,网站会使用一个表来存储用户信息,像用户表中的名字和 ID,使用字典表示如下:

users = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}

在该字典中,'Jack'、'Lucy'、'Tony' 这几个就是键(key),而 1001、1002、1003 这几个就是值(value)。你可以通过用户的名字找到其对应的 ID。

所谓的字典,其实是由一对对的 “键: 值” 组合而成的。每一个键都跟一个值相关联,你可以通过键来访问与之对应的值。在很多情况下,使用字典比使用列表更合适。下面是 Python 字典的一些用途。

  • 保存用户的电话号码,其中键是用户名,值是电话号码。
  • 存储文件的修改时间,其中键是文件名,值是修改时间。
  • 表示棋盘的状态,其中键是由坐标组成的元组,值是状态。

Python 创建字典

在 Python 中,我们可以使用大括号 “{}” 来创建一个字典。

语法:

dictname = {key1: value1, key2: value2, ... , keyN: valueN}

说明:

字典是由多个 “键值对” 组成的。键与值之间用英文冒号 “:” 分开,然后键值对之间用英文逗号 “,” 隔开。

键值对是两个相关的值,你可以使用键来访问对应的值,与键相关联的值可以是数字、字符串、列表乃至字典。事实上,你可以将任何 Python 对象作为字典中的值。

对于 Python 中的字典,小伙伴们需要特别注意以下 3 点。

  • 键(key)必须是唯一的,字典中不能出现重复的键。
  • 键(key)必须是不可变的,可以使用数字、字符串或元组,但不能使用列表。
  • 值(value)可以不唯一,可以是任意数据类型(包括数字、字符串、列表、元组和字典)。

示例 1:创建字典

# 创建一个空字典
users = {} 

# 创建包含 3 个键值对的字典
users = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003} 

注意: 请不要使用 “dict” 作为字典名,因为它跟 Python 内置的 dict() 函数冲突,可能会导致一些难以发现的问题。

Python 字典的基本操作

Python 列表 相似,对于字典键值对的基本操作,主要有 4 种:获取某个键的值、修改某个键的值、添加键值对、删除键值对。

1. 字典获取某个键的值

在 Python 中,如果想要获取字典中某一个键的值,有 2 种方式可以实现:一种是使用 dict[key],另一种是使用 get() 方法。

语法:

dictname[key]
dictname.get(key)

说明:

dict 表示字典名,key 表示键。对于 dict[key] 方法来说,如果字典中存在该键,则返回对应的值;如果字典不存在该键,则会报错。对于 dict.get() 方法来说,如果字典中存在该键,则返回对应的值;如果字典中不存在该键,则返回 None。

示例 2:使用 dict[key]

users = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
print(users['Lucy'])
print(users['Lily'])

运行结果如下。

1002
(报错)KeyError: 'Lily'

示例 3:使用 get() 方法

users = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
print(users.get('Lucy'))
print(users.get('Lily'))

运行结果如下。

1002
None

分析:

如果你可以确定字典某个键是存在的,那么一般都是使用 dict[key] 这种方式来获取该键的值。但如果指定的键可能不存在时,你应该考虑使用 dict.get(key) 这种方式。因为如果键不存在,使用 dict[key] 这种方式会直接报错。

2. 字典修改某个键的值

获取字典的某一键的值我们是知道了,但如果想要给某一个键赋一个新值,此时又应该怎么做呢?在 Python 中,我们也是通过 dict[key] 这种方式来实现的。

语法:

dictname[key] = value

示例 4:修改值

users = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
users['Tony'] = 6666
print(users)

运行结果如下。

{ 'Jack': 1001, 'Lucy': 1002, 'Tony': 6666 }

分析:

在上面示例中,users['Tony'] = 6666 表示给 'Tony' 这个键重新赋值为 6666,也就是 1003 被替换成了 6666。

3. 字典增加键值对

在 Python 中,如果想要为字典增加一个新的键值对,也是使用 dict[key] 这种方式来实现。

语法:

dict[key] = value

示例 5:增加新的键值对

users = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
users['Lily'] = 1004
print(users)

运行结果如下。

{'Jack': 1001, 'Lucy': 1002, 'Tony': 1003, 'Lily': 1004}

分析:

获取值、修改值、增加键值对,我们都是使用 dict[key] 这种方式来实现的。

注意: 从 Python 3.7 之后,字典中元素的排列顺序与定义时的相同。如果将字典打印出来,将发现元素的排列顺序与添加顺序相同。

4. 字典删除键值对

与列表一样,我们也是使用 del 关键字来删除字典中的键值对。

语法:

del dict[key]

示例 6:删除键值对

users = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
del users['Jack']
print(users)

运行结果如下。

{'Lucy': 1002, 'Tony': 1003}

Python 字典的方法

Python 为字典提供了非常多有用的方法,如下表所示。

Python 字典方法
方法 说明
get() 获取指定键的值,键不存在时返回默认值
update() 用另一个字典或键值对更新当前字典
pop() 删除指定键,并返回其值
popitem() 删除最后插入的键值对,并返回该键值对
keys() 返回字典所有 “键” 的视图
values() 返回字典所有 “值” 的视图
items() 返回字典所有 “键值对” 的视图
fromkeys() 用给定键创建新字典,值相同
setdefault() 获取键的值,不存在则设置默认值
copy() 返回字典的浅拷贝
clear() 清空字典所有键值对

上一篇: Python 判断字符串

下一篇: Python 字典长度

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号