热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Python入门教程】第41篇字典

本篇我们将会学习Python中的字典(Dictionary)数据类型,它可以用于组织多个相关的信息。字典类型Python字典是由多个键

本篇我们将会学习 Python 中的字典(Dictionary)数据类型,它可以用于组织多个相关的信息。


字典类型

Python 字典是由多个键值对(key-value)组成的集合,每一个 key 和一个 value 相关联。

键值对中的 value 可以是数字、字符串、列表、元组或者其他的字典。实际上,它可以是任何有效的数据类型。

键值对中的 key 必须是不可变对象。也就是说,它不能被改变,具体包括数字、字符串、元组等。

Python 使用大括号({})定义字段对象。在大括号内部,我们可以指定零个、一个或者多个键值对。以下示例定义了一个空的字典:

empty_dict = {}

一般来说,我们会在循环语句之前定义一个空字典,然后在循环内部为其增加键值对。

如果想要查看字典对象的类型,可以使用 type() 函数:

empty_dict = {}print(type(empty_dict))

输出结果如下:

<class &#39;dict&#39;>

以下示例定义了一个新的字典对象&#xff0c;它包含了一些键值对&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}

字典 person 包含了 5 个键值对&#xff0c;分别代表了名字、姓氏、年龄、喜欢的颜色以及活动状态。


访问字典值

如果想要通过 key 访问字典中的 value&#xff0c;可以使用方括号标识或者 get() 方法。


使用方括号标识

如果想要访问 key 关联的 value&#xff0c;可以将其放入方括号内&#xff1a;

dict[key]

以下代码演示了如何访问字典 person 中 first_name 和 last_name 关联的值&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}
print(person[&#39;first_name&#39;])
print(person[&#39;last_name&#39;])

输出结果如下&#xff1a;

John
Doe

使用 get() 方法

如果我们试图访问不存在的 key&#xff0c;将会返回一个错误信息。例如&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}ssn &#61; person[&#39;ssn&#39;]

错误信息如下&#xff1a;

Traceback (most recent call last):File "dictionary.py", line 15, in <module>ssn &#61; person[&#39;ssn&#39;]
KeyError: &#39;ssn&#39;

为了避免这种错误&#xff0c;我们可以使用字典的 get() 方法&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}ssn &#61; person.get(&#39;ssn&#39;)
print(ssn)

输出结果如下&#xff1a;

None

如果 key 不存在&#xff0c; get() 方法将会返回 None&#xff0c;而不是 KeyError 错误。其中&#xff0c;None 表示不存在值&#xff0c;或者空值。

get() 方法也可以通过第二个参数指定一个默认值&#xff0c;当 key 不存在时返回这个默认值。例如&#xff0c;以下示例返回了默认的字符串“000-00-0000”&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}ssn &#61; person.get(&#39;ssn&#39;, &#39;000-00-0000&#39;)
print(ssn)

输出结果如下&#xff1a;

000-00-0000

增加键值对

字典是一种动态结构&#xff0c;我们可以随时增加新的键值对。

增加键值对时&#xff0c;我们需要指定字典的名称&#xff0c;并且在方括号中指定新的 key&#xff0c;然后指定 value。以下示例为字典 person 增加了一个新的键值对&#xff1a;

person[&#39;gender&#39;] &#61; &#39;Famale&#39;

修改键值对中的值

如果想要修改某个 key 对应的 value&#xff0c;我们需要指定字典的名称&#xff0c;并且在方括号中指定 key&#xff0c;然后给出新的 value。

dict[key] &#61; new_value

以下示例修改了字典 person 中 age 对应的值&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}person[&#39;age&#39;] &#61; 26print(person)

输出结果如下&#xff1a;

{&#39;first_name&#39;: &#39;John&#39;, &#39;last_name&#39;: &#39;Doe&#39;, &#39;age&#39;: 26, &#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;], &#39;active&#39;: True}

删除键值对

使用 del 语句删除字典中的键值对&#xff1a;

del dict[key]

以上语法中&#xff0c;我们需要指定字典的名称以及 key。

以下示例删除了字典 person 中的 active 键&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}del person[&#39;active&#39;]
print(person)

输出结果如下&#xff1a;

{&#39;first_name&#39;: &#39;John&#39;, &#39;last_name&#39;: &#39;Doe&#39;, &#39;age&#39;: 25, &#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;]}

字典遍历

如果想要查看字典中的内容&#xff0c;可以使用 for 循环遍历它的键值对、key或者 value。

从 Python 3.7 开始&#xff0c;当我们遍历字典时&#xff0c;键值对将会按照插入时的顺序返回。


遍历所有的键值对

Python 字典提供了一个 items() 方法&#xff0c;可以返回一个包含键值对列表的对象&#xff0c;类似于一个元组构成的列表。例如&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}print(person.items())

输出结果如下&#xff1a;

dict_items([(&#39;first_name&#39;, &#39;John&#39;), (&#39;last_name&#39;, &#39;Doe&#39;), (&#39;age&#39;, 25), (&#39;favorite_colors&#39;, [&#39;blue&#39;, &#39;green&#39;]), (&#39;active&#39;, True)])

如果想要遍历字典中的键值对&#xff0c;可以使用一个 for 循环&#xff0c;指定两个代表键和值的变量&#xff0c;用于解包列表中的元组&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}for key, value in person.items():print(f"{key}: {value}")

输出结果如下&#xff1a;

first_name: John
last_name: Doe
age: 25
favorite_colors: [&#39;blue&#39;, &#39;green&#39;]
active: True

for 循环中的变量名可以自定义&#xff0c;并不一定需要叫做 key 和 value。


遍历所有的键

有时候我们只需要遍历字典中的键&#xff0c;这种情况下可以使用 for 循环加上 keys() 方法。keys() 方法用于返回一个包含字典键的对象。例如&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}for key in person.keys():print(key)

输出结果如下&#xff1a;

first_name
last_name
age
favorite_colors
active

实际上&#xff0c;遍历所有键是遍历字典的默认行为。因此&#xff0c;我们可以省略 keys() 方法。以下代码的输出结果和上面的示例相同&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}for key in person:print(key)

遍历所有的值

字典的 values() 方法可以返回一个包含全部值的列表。使用 for 循环加上 values() 方法可以遍历字典中的全部值&#xff1a;

person &#61; {&#39;first_name&#39;: &#39;John&#39;,&#39;last_name&#39;: &#39;Doe&#39;,&#39;age&#39;: 25,&#39;favorite_colors&#39;: [&#39;blue&#39;, &#39;green&#39;],&#39;active&#39;: True
}for value in person.values():print(value)

输出结果如下&#xff1a;

John
Doe
25
[&#39;blue&#39;, &#39;green&#39;]
True

总结


  • Python 字典是一个键值对的集合&#xff0c;每个键都有一个关联的值。
  • 使用方括号或者 get() 方法访问字典中的值。
  • 使用 del 语句删除字典中的键值对。
  • 使用 for 循环遍历字典的键、值或者键值对。

推荐阅读
  • 使用Flutternewintegration_test进行示例集成测试?回答首先在dev下的p ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • SmartRefreshLayout自定义头部刷新和底部加载
    1.添加依赖implementation‘com.scwang.smartrefresh:SmartRefreshLayout:1.0.3’implementation‘com.s ... [详细]
  • 20210304力扣 根据前序遍历和中序遍历确定二叉树 快速排序思想
    力扣根据前序遍历和中序遍历确定二叉树基本思路前序遍历确定根节点是哪个(第一个就是根节点)中序遍历根据已知根节点确定左右子树的元素组成根节点左左子树根节点右右子树再根据前序遍历确定左 ... [详细]
  • POJ 1046 Color Me Less
    ColorMeLessTimeLimit: 1000MS MemoryLimit: 10000KTotalSubmissions: 31449 Accept ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
author-avatar
空念
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有