4、Python基础之字典

目录

一、字典的介绍

二、字典的基本操作

1、访问字典中的值

1.1、通过键获取对应的值

1.2、使用get()来访问值 

2、修改字典

2.1、添加键值对

2.2、 删除键值对 

2.3、修改字典中的值

三、遍历字典

1、遍历所有键值对

2、遍历字典中的所有键

3、遍历字典中的值 

四、字典嵌套

1、在列表中存储字典

2、在字典中存储列表

3、在字典中存储字典


一、字典的介绍

在Python中,字典是一系列键值对(key: value)。每个键都与一个值关联,值的内容可以是数值、字符串、列表乃至字典。字典可以存储一个对象的多种信息,比如单个学生的学籍相关内容;也可以存储多个对象的同一类信息,比如数学老师手中的成绩单。

Python字典用放在大括号{ }中的一系列键值对表示,键和值之间用冒号分隔,而键值对之间用逗号分隔。键值对的数量是任意的。dict = {'key1': 'value1', 'key2': 'value2', ……}

二、字典的基本操作

假设我们有一个存储学生信息的字典:

1、访问字典中的值

1.1、通过键获取对应的值

通过dict['key']的形式来获取对应的value,如图:

需要注意:

1、字典的key和value都不能为空,否则无法正常使用。

2、key可以是空串(可能并没有什么实际意义😜 )。

3、key可以重复,但是在根据key获取value的时候,会产生覆盖,只能输出最后一次访问的键值对

4、value可以是None,且可以被正常获取。

用一张图来说明:

1.2、使用get()来访问值 

通过1.1中的方式来获取值时,在某些场景下可能会引发问题,比如指定的键不存在,这时会产生错误:

这时,我们可以使用get()方法来避免这种错误。get()方法有两个参数位,第一个用于指定键(即key),这是必不可少的;第二个参数为指定的键不存在时要返回的内容,为可选项。如果指定的键不存在,又没有指定第二个参数的内容 ,Python会返回None。

2、修改字典

字典是一种动态结构,可以随时进行键值对的添加、修改以及值的变更。

2.1、添加键值对

要添加键值对,需要依次指定字典名、用方括号括起来的键和关联的值。

2.2、 删除键值对 

对于字典中不需要的信息,可以使用del语句将相应的键值对彻底删除。删除时须指定字典名和键

接着上边成绩字典的例子,我们继续:

2.3、修改字典中的值

 要修改字典中的值,依次指定字典名、键,以及关联的新值。

例如,我们发现语文成绩搞错了,需要修正:

 

三、遍历字典

鉴于字典可能包含大量数据,Python支持对字典进行遍历。可以遍历所有的键值对,也可以仅针对键或值进行遍历。下面我们举例说明:

1、遍历所有键值对

使用for循环对字典进行遍历,可以声明两个变量用于存储键和值。而循环体包含字典名和方法items(),它会返回一个键值对列表。

比如,我们有一个汽车使用情况的字典:

变量可以任意命名(key、value,k、v,或者其他与业务关联的名字都是可以的),而根据业务来定义变量的名称,可以增加代码的可读性,使代码更容易被人理解。比如,上面的代码可以稍微调整一下:

2、遍历字典中的所有键

在不需要使用字典中的值时,方法keys()就派上用场了。

 

 其实,遍历字典时,会默认遍历所有的键,即:可以在代码中省略keys()方法。

 从上面的示例可以看出,有没有keys()方法,结果是一样的。但是,显示的使用keys()方法,可以使代码更容易被理解,增加可读性。

另外,我们还可以按照特定的顺序去遍历字典中的所有键。Python3.7版本开始,遍历字典时,返回的元素是按照插入时的顺序排列的。但有时候我们可能想换一种顺序去遍历字典,这时可以使用sorted()方法,在for循环中对返回的键进行排序,获取一个排好序的列表副本:

可以看到,sorted()方法并没有改变字典中元素(键值对)的顺序。 

另外,我们还可以判断某个key是否存在于字典中:

3、遍历字典中的值 

如果只关心字典中的值,可使用方法values()来返回一个值列表,而不包含任何键。

 但是,这种方法会返回字典中所有的值,包括重复的元素。如果想去重,可以使用集合set。集合中的每个元素都是唯一的:

四、字典嵌套

字典嵌套,是指将一系列字典存储在列表中,或者将一些列表作为值存储到字典中,甚至在字典中存放字典。

1、在列表中存储字典

以前边提到的学籍档案为例子:

还可以使用range()方法来批量生成字典:

2、在字典中存储列表

下面的代码,输出了每个国家包含的汽车品牌

3、在字典中存储字典

进一步的,我们可以在字典中存储字典,即将字典作为值存到另一个字典中。

请看示例:

需要注意,字典嵌套时,内层的字典最好拥有相同的结构,这样在处理时更简单更容易操作。否则,循环处理字典内容将是一件很复杂的事。

(完) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值