Python语法之字典

简介: 前面的文章中已经介绍了循环语句for与while,以及中断语句break与continue。今天一起给小伙伴们介绍一下Python中的“字典”,这里的字典和我们平时所用的字典不一样,这个是Python中的一个重点语法。

前面的文章中已经介绍了循环语句for与while,以及中断语句break与continue。

今天一起给小伙伴们介绍一下Python中的“字典”,这里的字典和我们平时所用的字典不一样,这个是Python中的一个重点语法。

{'姓名':'李四','年龄':18} 就是一个字典,字典是一系列键值对的集合,姓名:李四 便是一个键值对,其中键为姓名,值为 李四。创建字典时,只需要将键值对用花括号{} 括起来,每个键值对的键和值之间用冒号 : 分隔,每个键值对之间用逗号 , 分隔。

(需要注意的是:冒号和逗号都是在英文状态下的冒号和逗号)

网络异常,图片无法展示
|

关于字典的创建语法:

1. 字典创建语法

d = {<key>: <value>,<key>: <value>,...<key>: <value>}

用大括号 {} 将键值对括起来,键值对的键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔。

2. 创建字典

接下来看一下字典的创建,我这里以哪吒闹海的故事给小伙伴们讲一下。哪吒自幼喜欢习武,有一天,他同小朋友在海边嘻戏,正好碰上巡海夜叉,与东海龙王三太子出来肆虏百姓,残害儿童。小哪吒见此恶徒,义愤填膺,挺身而出,打死夜叉与三太子敖丙又抽了它的龙筋。东海龙王得知此讯后勃然大怒,降罪于哪吒的父亲,随即兴风作浪,口吐洪水淹没陈塘关。小哪吒不愿牵连父母,于是自己剖腹、剜肠、剔骨,还筋肉于双亲,仙师太乙真人借着荷叶莲花之力,为其脱胎换骨,化作莲花化身的哪吒。后来大闹东海,砸了龙宫,捉了龙王,为民除害。

举一个例子,我这里拿王者荣耀里面的哪吒这个英雄的各属性来创建一个字典:

网络异常,图片无法展示
|

属性数据的字典:

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
print(ne_zha)
print(type(ne_zha))

在代码中打印出哪吒这个英雄的各属性,数据类型返回值是一个字典。

需要注意的是,在创建字典的时候,字典中的键值不能够重复,重复会产生报错。

3. 访问字典

字典已经创建好了,我们需要访问字典中的英雄名字、最大生命、生命成长的值,应该如何访问呢?

访问字典中的某个键值对的值:字典名[键名],只需要将键值对的键名放到方括号 [] 中就OK啦。

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450,'最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
print(ne_zha['英雄名字'])
print(ne_zha['最大生命'])
print(ne_zha['生命成长'])

结果中显示了英雄名字、最大生命和生命成长这三个键值对的值。

除了上面的访问方式之外,还可以采用get() 方法进行访问,语法规则是字典名.get(键名)

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
print(ne_zha.get('英雄名字'))
print(ne_zha.get('最大生命'))
print(ne_zha.get('生命成长'))

还有一种办法是通过遍历的方式(一般可以通过for循环来实现遍历)进行字典中键值对的访问。

使用以下代码逐个打印字典中的所有键名。

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
for key in ne_zha:
    print(key)

代码中的key表示的是键名,在下面的代码中ne_zha[key] 便表示键值。

#逐个打印字典中的所有值
ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
for key in ne_zha:
    print(ne_zha[key])

其次,还可以用values() 函数返回字典的值,语法规则是字典名.values(),运行下方语句:

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
for value in ne_zha.values():
    print(value)

items() 函数遍历键和值,语法规则是字典名.items(),运行下方语句:

(key 表示键名,value 表示键值)

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
for key, value in ne_zha.items():
    print("key = ", key, ", value = ", value)

4. 修改字典

与列表一样,可以对创建好的字典进行相应的修改。可以在字典中添加项目。

4.1 添加项目

变量和列表中都介绍了索引,现在又是索引发挥作用的时刻了,我们可以通过使用新的索引键并为其赋值,来为字典添加新的项目。

使用索引将哪吒的“最大每5秒回血”这个属性添加到 ne_zha 这个字典中,具体语句如下:

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
ne_zha['最大每5秒回血'] = 98
print(ne_zha)

哪吒的“最大每5秒回血”添加到了ne_zha 这个字典的结尾处。

4.2 删除项目

除了可以往字典中添加项目,也可以从字典中删除项目。可以通过多种方式删除字典中的项目,逐一介绍给大家:

4.2.1 pop()方法

pop() 方法删除具有指定键名的项,语法规则为字典名.pop(键名)。键名如果是字符串,记得加英文状态下的引号哟!

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
ne_zha.pop('英雄名字')
print(ne_zha)

4.2.2 popitem()

popitem() 方法删除最后插入的项目(在 3.7 之前的版本中,删除随机项目),语法规则为字典名.popitem()

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
print(ne_zha)
ne_zha.popitem()
print(ne_zha)

执行 popitem() 语句之后,字典中最后位置的 '初始物防': 99 被删除了。

4.2.3 del

我们也可以使用 del 关键字删除具有指定键名的项目,语法规则为 del 字典名[键名],我们运行下方语句:

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
del ne_zha['最大生命']
print(ne_zha)

字典 ne_zha 中的 '最大生命': 7268 被删除了。del 关键字也可以完全删除字典,语法规则为:del 字典名

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
del ne_zha
print(ne_zha)  # 会报错,因为删除之后 ne_zha 不再存在。

4.2.4 clear()

除了删除字典,我们也可以清空字典,有没有非常羡慕程序呢,有时候我们也想清空下自己,却发现实施起来太难太难!

clear() 函数清空字典,语法规则为:字典名.clear(),运行下方语句:

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
ne_zha.clear()
print(ne_zha)

5. 复制字典

在变量和列表中,我们可以通过 name2 = name1 的语句来将变量或者是列表的内容进行复制,但对于字典来说,是不能通过键入 dict2 = dict1 来复制字典。因为,dict2 只是对 dict1 的引用,而 dict1 中的更改也将自动在 dict2 中进行。有一些方法可以进行复制,一种方法是使用内建的字典方法 copy(),语法规则是 字典名.copy(),通过 ne_zha_copy = ne_zha.copy() 语句来实现列表 ne_zha 的复制。

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
ne_zha_copy = ne_zha.copy()
print(ne_zha_copy)

制作副本的另一种方法是使用内建方法 dict(),语法规则是 dict(字典名),通过ne_zha_copy = dict(ne_zha) 语句来实现对字典 ne_zha 的复制。

ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
ne_zha_copy = dict(ne_zha)
print(ne_zha_copy)

6. 使用dict()创建字典

可以使用 dict() 构造函数创建新的字典,语法规则为:字典名 = dict(键名=键值, 键名=键值,..., 键名=键值)

# 注意:1.关键字不是字符串字面量;2.使用了等号而不是冒号来赋值。
ne_zha = dict(英雄名字='哪吒', 最大生命=7268, 生命成长=270.4, 初始生命=3483, 最大法力=1808, 法力成长=97, 初始法力=450, 最高物攻=320, 物攻成长=11.5, 初始物攻=159, 最大物防=408, 物防成长=22.07, 初始物防=99)
print(ne_zha)

7. 动动你的手敲一敲代码

通过两个题目来验证下大家对于字典的掌握效果!

7.1 给字典添加项目

向字典ne_zha = {'英雄': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}中添加项目 {'每5秒回血成长': 3.214}

7.2 从字典中删除项

从字典 ne_zha = {'英雄': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}中删除项目 {'初始物攻': 159}

相关文章
|
5月前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
153 4
|
4月前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
91 7
|
2月前
|
存储 开发者 Python
python基本语法
Python的基本语法简洁而强大,支持多种编程范式,包括面向对象编程和函数式编程。通过掌握变量和数据类型、操作符、控制结构、函数、类和模块等基本概念,可以有效地编写高效、可读的Python代码。无论是初学者还是经验丰富的开发者,Python都提供了丰富的工具和库来满足各种编程需求。
88 13
|
4月前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
180 61
|
2月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
54 2
|
4月前
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
34 1
|
4月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
85 1
|
4月前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
4月前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
44 2
|
5月前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!

热门文章

最新文章