python3 dictionary,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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值