个性化阅读
专注于IT技术分析

python3字典dictionary – Python3教程

上一章Python教程请查看:python3集合set

在本文中,你将学习关于Python dictionary的所有内容:如何创建、访问、添加和删除元素,以及各种内置方法。

Python中的字典是什么?

Python字典是一个无序的项集合,其他复合数据类型只有值作为元素,而字典有一个键:值对。

字典被优化为在键已知时快速检索值。

如何创建字典?

创建字典非常简单,只需将条目放在用逗号分隔的花括号{}中即可。

一个项目有一个键和相应的值,并以对的形式表示,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() 在字典中返回一个新排序的键列表。

下面是一些使用内置函数处理dictionary的示例。

squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}

# 输出: 5
print(len(squares))

# 输出: [1, 3, 5, 7, 9]
print(sorted(squares))
赞(0)
未经允许不得转载:srcmini » python3字典dictionary – Python3教程

评论 抢沙发

评论前必须登录!