前面的几个小节我们分别学习了字符串、列表、和元组等等几种 Python 中的基础数据类型,这节课我们来学习 Python 中另一个比较重要的数据类型–字典,字典和其他我们已经学习过的数据类型都有些不一样,具体不一样在哪里我们一起来看一下:
字典由键和对应值成对组成,字典中所有的键值对放在 {} 中间,每一对键值之间用逗号分开,例如:
-
{‘a’:‘A’, ‘b’: ‘B’, ‘c’:‘C’}
- 字典中包含 3 个键值对
- 键 ‘a’ 的值是 ‘A’
- 键 ‘b’ 的值是 ‘B’
- 键 ‘c’ 的值是 ‘C’
-
{1:100, 2: 200, 3:300}
- 字典中包含 3 个键值对
- 键 1 的值是 100
- 键 2 的值是 200
- 键 3 的值是 300
字典通常用于描述对象的各种属性,例如一本书,有书名、作者名、出版社等各种属性,可以使用字典描述如下:
>>> book = {'title': 'Python 入门基础', 'author': '张三', 'press': '机械工业出版社'} >>> book['title'] 'Python 入门基础' >>> book['author'] '张三' >>> book['press'] '机械工业出版社'
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 在第 1 行,创建了一个字典用于描述一本书;
- 在第 2 行,使用字符串 ‘title’ 作为键(索引)访问字典中对应的值;
- 在第 4 行,使用字符串 ‘author’ 作为键(索引)访问字典中对应的值;
- 在第 6 行,使用字符串 ‘press’ 作为键(索引)访问字典中对应的值。
本节介绍对字典的最常见的几种操作,包括:
>>> x = {'a':'A', 'b':'B'} >>> x['a'] 'A' >>> x['b'] 'B'
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 在第 1 行,创建一个具有 2 个键值对的字典;
- 在第 2 行,读取键 ‘a’ 对应的值;
- 在第 3 行,结果显示为 ‘A’;
- 在第 4 行,读取键 ‘b’ 对应的值;
- 在第 5 行,结果显示为 ‘B’。
>>> x = {'a':'A', 'b':'B'} >>> x['a'] = 'AA' >>> x['b'] = 'BB' >>> x {'a':'AA', 'b':'BB'}
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 在第 1 行,创建一个具有 2 个键值对的字典;
- 在第 2 行,修改键 ‘a’ 对应的值为 ‘AA’;
- 在第 3 行,修改键 ‘b’ 对应的值为 ‘BB’;
- 在第 4 行,显示修改后的字典。
>>> x = {'a':'A', 'b':'B'} >>> x['c'] = 'C' >>> x {'a':'A', 'b':'B', 'c':'C'}
代码块预览 复制
- 1
- 2
- 3
- 4
- 在第 1 行,创建一个具有 2 个键值对的字典;
- 在第 2 行,在字典中增加一个键值对:键为 ‘c’,值为 ‘C’;
- 在第 3 行,显示新增后的字典;
- 在第 4 行,新增后的自动包含 3 个键值对。
>>> x = {'a':'A', 'b':'B', 'c': 'C'} >>> del x['b'] >>> x {'a':'A', 'c':'C'}
代码块预览 复制
- 1
- 2
- 3
- 4
- 在第 1 行,创建一个具有 3 个键值对的字典;
- 在第 2 行,使用 del 语句从字典 x 中删除键 ‘b’ 对应的键值对;
- 在第 3 行,显示删除后的字典;
- 在第 4 行,删除一个键值对后,字典仅包含 2 个键值对。
通过关键字 in 检查字典中是否包含指定元素,示例如下:
>>> x = {'a':'A', 'b':'B'} >>> 'a' in x True >>> 'c' in x False
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 在第 1 行,创建一个具有 2 个键值对的字典;
- 在第 2 行,使用表达式 key in dictionary,检测键 ‘a’ 是否在字典 x 中;
- 在第 3 行,结果为真,表示键 ‘a’ 在字典 x 中;
- 在第 3 行,使用表达式 key in dictionary,检测键 ‘b’ 是否在字典 x 中;
- 在第 4 行,结果为假,表示键 ‘b’ 不在字典 x 中。
使用函数 len 获取字典中键值对的数量,示例如下:
>>> x = {'a':'A', 'b':'B'} >>> len(x) 2
代码块预览 复制
- 1
- 2
- 3
- 在第 1 行,创建一个具有 2 个键值对的字典;
- 在第 2 行,使用函数 len (x) 获取字典 x 中键值对的数量;
- 在第 3 行,结果显示字典 x 包含 2 个键值对。
clear () 方法删除字典中所有的键值对,示例如下:
>>> x = {'a':'A', 'b':'B'} >>> x.clear() >>> x {}
代码块预览 复制
- 1
- 2
- 3
- 4
- 在第 1 行,创建一个具有 2 个键值对的字典;
- 在第 2 行,使用方法 clear () 删除字典中所有的键值对;
- 在第 3 行,显示删除后的字典;
- 在第 4 行,结果显示字典为空,不包含任何键值对。
pop (key) 方法删除字典给定键 key 所对应的键值对,返回被删除的值,示例如下:
>>> x = {'a':'A', 'b':'B', 'c': 'C'} >>> x.pop('b') 'B' >>> x {'a':'A', 'c':'C'}
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 在第 1 行,创建一个具有 3 个键值对的字典;
- 在第 2 行,使用方法 pop (‘b’) 从字典中删除键 ‘b’ 对应的键值对;
- 在第 3 行,方法 pop (‘b’) 返回键 ‘b’ 对应的值 ‘B’;
- 在第 4 行,显示删除后的字典;
- 在第 5 行,删除一个键值对后,字典仅包含 2 个键值对。
Python 提供了 for 循环语句用于遍历列表、集合、字典等数据类型,关于 for 循环语句的详细用法,请参考词条 Python 的循环控制语句。
可以使用 for key in dict 遍历字典中所有的键,示例如下:
x = {'a':'A', 'b':'B'} for key in x: print(key)
代码块预览 复制
- 1
- 2
- 3
- 在第 1 行,创建一个包含 2 个键值对的字典;
- 在第 2 行,遍历字典中所有的键 ‘a’、‘b’。
程序输出结果如下:
a b
代码块预览 复制
- 1
- 2
字典提供了 keys () 方法返回字典中所有的键,可以使用 for key in dict.keys () 遍历字典中所有的键,示例如下:
x = {'a':'A', 'b':'B'} for key in x.keys(): print(key)
代码块预览 复制
- 1
- 2
- 3
- 在第 1 行,创建一个包含 2 个键值对的字典;
- 在第 2 行,遍历字典中所有的键 ‘a’、‘b’。
程序输出结果如下:
a b
代码块预览 复制
- 1
- 2
字典提供了 values () 方法返回字典中所有的值,可以使用 for values in dict.values () 遍历字典中所有的值,示例如下:
x = {'a':'A', 'b':'B'} for value in x.values(): print(value)
代码块预览 复制
- 1
- 2
- 3
- 在第 1 行,创建一个包含 2 个键值对的字典;
- 在第 2 行,遍历字典中所有的值 ‘A’、‘B’。
程序输出结果如下:
A B
代码块预览 复制
- 1
- 2
字典提供了 items () 方法返回字典中所有的键值对 item,键值对 item 是一个元组(第 0 项是键、第 1 项是值),可以使用 for item in dict.items () 遍历字典中所有的键值对,示例如下:
x = {'a':'A', 'b':'B'} for item in x.items(): key = item[0] value = item[1] print('%s:%s' % (key, value))
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 在第 1 行,创建一个包含 2 个键值对的字典;
- 在第 2 行,遍历字典中所有的键值对 item;
- 在第 3 行,键值对 item 是一个元组,item [0] 是键;
- 在第 4 行,键值对 item 是一个元组,item [1] 是值;
- 在第 5 行,打印键和值。
程序输出结果如下:
a:A b:B
代码块预览 复制
- 1
- 2
可以使用 for key,value in dict.items () 遍历字典中所有的键值对,示例如下:
x = {'a':'A', 'b':'B'} for key,value in x.items(): print('%s:%s' % (key, value))
代码块预览 复制
- 1
- 2
- 3
- 在第 1 行,创建一个包含 2 个键值对的字典;
- 在第 2 行,遍历字典中所有的键值对 item;
- 在第 3 行,键值对 item 是一个元组,item [0] 是键;
- 在第 4 行,键值对 item 是一个元组,item [1] 是值;
- 在第 5 行,打印键和值。
程序输出结果如下:
a:A b:B
代码块预览 复制
- 1
- 2