上一章Python教程请查看:python3集合set
在本文中,你将学习关于Python
dictionary的所有内容:如何创建、访问、添加和删除元素,以及各种内置方法。
Python中的字典是什么?Python字典是一个无序的项集合,其他复合数据类型只有值作为元素,而字典有一个键:值对。
字典被优化为在键已知时快速检索值。
如何创建字典?创建字典非常简单,只需将条目放在用逗号分隔的花括号{}中即可。
【python3字典dictionary –
Python3教程】一个项目有一个键和相应的值,并以对的形式表示,key: value。
虽然值可以是任何数据类型,并且可以重复,但是键必须是不可变类型(字符串、数字或带有不可变元素的元组),并且必须是惟一的。
# 空字典
my_dict = {}
# 整数键
my_dict = {1: 'apple', 2: 'ball'}my_dict = {'name': 'John', 1: [2, 4, 3]}
# 使用 dict()
my_dict = dict({1:'apple', 2:'ball'})
# 将每个项作为一对的序列
my_dict = dict([(1,'apple'), (2,'ball')])
正如上面所看到的,我们还可以使用内置函数dict()创建一个字典。
如何从字典中访问元素?虽然索引与其他容器类型一起使用来访问值,但是dictionary使用键,键可以在方括号内使用,也可以与get()方法一起使用。
使用get()的区别在于,如果没有找到key,它将返回None,而不是KeyError。
my_dict = {'name':'Jack', 'age': 26}# 输出: Jack
print(my_dict['name'])# 输出: 26
print(my_dict.get('age'))# 试图访问不存在的关键字会抛出错误
# my_dict.get('address')
# my_dict['address']
如何更改或添加字典中的元素?字典是可变的,我们可以使用赋值运算符添加新项或更改现有项的值。
如果键已经存在,则值将被更新,否则新键:值对将被添加到字典中。
my_dict = {'name':'Jack', 'age': 26}# 更新
my_dict['age'] = 27#输出: {'age': 27, 'name': 'Jack'}
print(my_dict)# 添加
my_dict['address'] = 'Downtown'# 输出: {'address': 'Downtown', 'age': 27, 'name': 'Jack'}
print(my_dict)
如何删除字典或从字典中删除元素?我们可以使用pop()方法删除字典中的特定项,此方法使用提供的键删除项目并返回值。
popitem()方法可用于从字典中删除和返回任意项(键、值),可以使用clear()方法立即删除所有项。
我们还可以使用del关键字来删除单个项或整个字典本身。
# 创建字典
squares = {1:1, 2:4, 3:9, 4:16, 5:25}# 删除指定项
# 输出: 16
print(squares.pop(4))# 输出: {1: 1, 2: 4, 3: 9, 5: 25}
print(squares)# 删除任意项
# 输出: (1, 1)
print(squares.popitem())# 输出: {2: 4, 3: 9, 5: 25}
print(squares)# 删除指定项
del squares[5]# 输出: {2: 4, 3: 9}
print(squares)# 删除所有项
squares.clear()# 输出: {}
print(squares)# 删除字典本身
del squares# 抛出 Error
# print(squares)
Python字典的方法字典中可用的方法如下表所示,其中一些已经在上面的示例中使用过。
Python字典的方法
方法 | 描述 |
clear() | 从字典中删除所有项。 |
copy() | 返回字典的浅拷贝。 |
fromkeys(seq[, v]) | 返回一个新的字典,键来自seq,值等于v(默认为None)。 |
get(key[,d]) | 返回键值。如果键不退出,返回d(默认为None)。 |
items() | 返回字典项的新视图(键、值)。 |
keys() | 返回字典键的新视图。 |
pop(key[,d]) | 删除带键的项并返回其值,如果没有找到键,则返回d。如果没有提供d,并且没有找到密钥,则引发密钥错误。 |
popitem() | 删除并返回任意项(键、值)。如果字典为空,则引发KeyError。 |
setdefault(key[,d]) | 如果键在字典中,返回它的值。如果没有,则插入值为d的键并返回d(默认为None)。 |
update([other]) | 用来自其他的键/值对更新字典,覆盖现有的键。 |
values() | 返回字典值的新视图 |
marks = {}.fromkeys(['Math','English','Science'], 0)# 输出: {'English': 0, 'Math': 0, 'Science': 0}
print(marks)for item in marks.items():
print(item)# 输出: ['English', 'Math', 'Science']
list(sorted(marks.keys()))
Python字典推导(Dictionary comprehension)字典推导是一种优雅和简洁的方法来创建新的字典从一个可迭代的Python。
字典推导由一个表达式对(key: value)和一个for语句组成,后者位于花括号{}内。
下面是一个制作字典的例子,每个条目都是一对数字和它的平方。
squares = {x: x*x for x in range(6)}# 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
print(squares)
这个代码相当于:
squares = {}
for x in range(6):
squares[x] = x*x
字典可选地包含更多的for或if语句。
一个可选的if语句可以过滤掉条目以形成新的字典。
这里有一些例子,使字典只有奇数项。
odd_squares = {x: x*x for x in range(11) if x%2 == 1}# 输出: {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
print(odd_squares)
其他字典操作字典成员测试
我们可以测试一个键是否在字典中,或者是否使用关键字in,请注意,成员资格测试仅针对键,而不针对值。
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}# 输出: True
print(1 in squares)# 输出: True
print(2 not in squares)# 输出: False
print(49 in squares)
遍历字典
使用for循环,我们可以遍历字典中的每个键。
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
print(squares[i])
字典内置函数
内置函数如all()、any()、len()、cmp()、sort()等通常与dictionary一起用于执行不同的任务。
内置函数与字典
函数 | 说明 |
all() | 如果字典的所有键都为真(或者字典为空),则返回True。 |
any() | 如果字典中的任何键为真,则返回真。如果字典是空的,返回False。 |
len() | 返回字典中的长度(条目的数量)。 |
cmp() | 比较两个字典的项。 |
sorted() | 在字典中返回一个新排序的键列表。 |
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}# 输出: 5
print(len(squares))# 输出: [1, 3, 5, 7, 9]
print(sorted(squares))
推荐阅读
- python3文件IO – Python3教程
- python3字符串string – Python3教程
- python3元组tuple – Python3教程
- python3列表list – Python3教程
- python3数字,类型转换和数学 – Python3教程
- python3包(package)和模块(module) – Python3教程
- python3模块 – Python3教程
- python3全局关键字global – Python3教程
- python3全局变量、局部变量和非局部变量 – Python3教程