• #1 字典创建语法">#1 字典创建语法
  • #2 创建字典">#2 创建字典
  • #3 访问字典">#3 访问字典
  • #4 修改字典">#4 修改字典
    • #4.1 添加项目">#4.1 添加项目
    • #4.2 删除项目">#4.2 删除项目
      • #4.2.1 <font style="color:rgb(71, 101, 130);">pop()</font> 方法">#4.2.1 <font style="color:rgb(71, 101, 130);">pop()</font> 方法
      • #4.2.2 <font style="color:rgb(71, 101, 130);">popitem()</font>">#4.2.2 <font style="color:rgb(71, 101, 130);">popitem()</font>
      • #4.2.3 <font style="color:rgb(71, 101, 130);">del</font>">#4.2.3 <font style="color:rgb(71, 101, 130);">del</font>
      • #4.2.4 <font style="color:rgb(71, 101, 130);">clear()</font>">#4.2.4 <font style="color:rgb(71, 101, 130);">clear()</font>
  • #5 复制字典">#5 复制字典
  • #6 使用 <font style="color:rgb(71, 101, 130);">dict()</font> 创建字典">#6 使用 <font style="color:rgb(71, 101, 130);">dict()</font> 创建字典
  • #7 总结">#7 总结
  • #8 练习题">#8 练习题
    • #8.1 向字典 <font style="color:rgb(71, 101, 130);">ne_zha = {'英雄': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}</font>中添加项目 <font style="color:rgb(71, 101, 130);">{'每5秒回血成长': 3.214}</font>">#8.1 向字典 <font style="color:rgb(71, 101, 130);">ne_zha = {'英雄': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}</font>中添加项目 <font style="color:rgb(71, 101, 130);">{'每5秒回血成长': 3.214}</font>
    • #8.2 从字典 <font style="color:rgb(71, 101, 130);">ne_zha = {'英雄': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}</font>中删除项目 <font style="color:rgb(71, 101, 130);">{'初始物攻': 159}</font>">#8.2 从字典 <font style="color:rgb(71, 101, 130);">ne_zha = {'英雄': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}</font>中删除项目 <font style="color:rgb(71, 101, 130);">{'初始物攻': 159}</font>

    7字典-多类别 - 图1

    首页

    课程地图 成长学园 创意集市 高校合作 企业服务 技术服务

    学习教程

    今天要开启第七关啦,在第七关开始之前,我们来回顾下第六关的内容:

    7字典-多类别 - 图2

    第六关中,我们介绍循环语句 <font style="color:rgb(71, 101, 130);">for</font> <font style="color:rgb(71, 101, 130);">while</font>,以及中断循环语句 <font style="color:rgb(71, 101, 130);">break</font> <font style="color:rgb(71, 101, 130);">continue</font> 下面,我们正式开启本关的闯关啦!本关我们将为大家介绍字典:

    <font style="color:rgb(71, 101, 130);">{'姓名':'张三','年龄':18}</font> 就是一个字典,字典是一系列键值对的集合,<font style="color:rgb(71, 101, 130);">姓名:张三</font> 便是一个键值对,其中键为<font style="color:rgb(71, 101, 130);">姓名</font>,值为 <font style="color:rgb(71, 101, 130);">张三</font>。创建字典时,只需要将键值对用花括号<font style="color:rgb(71, 101, 130);">{}</font> 括起来,每个键值对的键和值之间用冒号 <font style="color:rgb(71, 101, 130);">:</font> 分隔,每个键值对之间用逗号 <font style="color:rgb(71, 101, 130);">,</font> 分隔。

    (注意:冒号和逗号均为英文状态下的逗号和冒号)。

    7字典-多类别 - 图3

    我们首先来看字典的创建语法:

    #1 字典创建语法

    <font style="color:rgb(71, 101, 130);">d = {<key>: <value>,<key>: <value>,...<key>: <value>}</font>

    用大括号 <font style="color:rgb(71, 101, 130);">{}</font> 将键值对括起来,键值对的键和值之间用冒号 <font style="color:rgb(71, 101, 130);">:</font> 分隔,键值对之间用逗号 <font style="color:rgb(71, 101, 130);">,</font> 分隔。

    #2 创建字典

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

    7字典-多类别 - 图4

    属性数据字典:
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. print(ne_zha)
    3. print(type(ne_zha))
    1
    2
    3 我们看到打印出了哪吒这个英雄的各项属性,数据类型返回值是字典。 需要注意的是,在创建字典时,字典中的键值不能重复,重复会报错。

    #3 访问字典

    字典创建完成之后,我们想要访问字典中的英雄名字、最大生命、生命成长的值,该如何访问呢? 访问字典中某个键值对的值:<font style="color:rgb(71, 101, 130);">字典名[键名]</font>,只需要将键值对的键名放到方括号 <font style="color:rgb(71, 101, 130);">[]</font> 中就可以啦。 我们运行下方语句。
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450,'最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. print(ne_zha['英雄名字'])
    3. print(ne_zha['最大生命'])
    4. print(ne_zha['生命成长'])
    1
    2
    3
    4
    5 我们看到结果显示了英雄名字、最大生命和生命成长这三个键对应的值。 除了使用上述方式进行访问外,我们还可以使用 <font style="color:rgb(71, 101, 130);">get()</font> 方法进行访问,语法规则是<font style="color:rgb(71, 101, 130);">字典名.get(键名)</font> 我们运行下方语句:
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. print(ne_zha.get('英雄名字'))
    3. print(ne_zha.get('最大生命'))
    4. print(ne_zha.get('生命成长'))
    1
    2
    3
    4
    5 除了上述两种方法,我们还可以通过遍历的方式(一般通过<font style="color:rgb(71, 101, 130);">for</font>循环来实现遍历哦)来访问字典中的键值对。 下面代码逐个打印字典中的所有键名。
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. for key in ne_zha:
    3. print(key)
    1
    2
    3
    4 上述语句是打印键名,打印值的话,使用的是下方语句: key 表示键名,根据刚刚我们介绍的访问键值的方法, <font style="color:rgb(71, 101, 130);">ne_zha[key]</font> 便表示键值。
    1. #逐个打印字典中的所有值
    2. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    3. for key in ne_zha:
    4. print(ne_zha[key])
    1
    2
    3
    4
    5 另外,还可以使用 <font style="color:rgb(71, 101, 130);">values()</font> 函数返回字典的值,语法规则是<font style="color:rgb(71, 101, 130);">字典名.values()</font>,运行下方语句:
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. for value in ne_zha.values():
    3. print(value)
    1
    2
    3
    4 还可以使用 <font style="color:rgb(71, 101, 130);">items()</font> 函数遍历键和值,语法规则是<font style="color:rgb(71, 101, 130);">字典名.items()</font>,运行下方语句: (key 表示键名,value 表示键值)
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. for key, value in ne_zha.items():
    3. print("key = ", key, ", value = ", value)
    1
    2
    3
    4

    #4 修改字典

    和列表一样,我们可以对创建好的字典进行相应的修改。 我们首先来看在字典中添加项目。

    #4.1 添加项目

    我们之前在变量和列表中都介绍了索引,现在又是索引发挥作用的时刻了,我们可以通过使用新的索引键并为其赋值,来为字典添加新的项目。 我们使用索引将哪吒的“最大每5秒回血”这个属性添加到 <font style="color:rgb(71, 101, 130);">ne_zha</font> 这个字典中,具体语句如下:
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. ne_zha['最大每5秒回血'] = 98
    3. print(ne_zha)
    1
    2
    3
    4 我们看到哪吒的“最大每5秒回血”添加到了<font style="color:rgb(71, 101, 130);">ne_zha</font> 这个字典的结尾处。

    #4.2 删除项目

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

    #4.2.1 <font style="color:rgb(71, 101, 130);">pop()</font> 方法

    <font style="color:rgb(71, 101, 130);">pop()</font> 方法删除具有指定键名的项,语法规则为<font style="color:rgb(71, 101, 130);">字典名.pop(键名)</font>。键名如果是字符串,记得加英文状态下的引号哟!我们运行下方语句:

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

    #4.2.2 <font style="color:rgb(71, 101, 130);">popitem()</font>

    <font style="color:rgb(71, 101, 130);">popitem()</font> 方法删除最后插入的项目(在 3.7 之前的版本中,删除随机项目),语法规则为<font style="color:rgb(71, 101, 130);">字典名.popitem()</font>

    运行下方语句:
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. print(ne_zha)
    3. ne_zha.popitem()
    4. print(ne_zha)
    1
    2
    3
    4
    5 我们看到执行 <font style="color:rgb(71, 101, 130);">popitem()</font> 语句之后,字典中最后位置的 <font style="color:rgb(71, 101, 130);">'初始物防': 99</font> 被删除了。

    #4.2.3 <font style="color:rgb(71, 101, 130);">del</font>

    我们也可以使用 <font style="color:rgb(71, 101, 130);">del</font> 关键字删除具有指定键名的项目,语法规则为 <font style="color:rgb(71, 101, 130);">del 字典名[键名]</font>,我们运行下方语句:
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. del ne_zha['最大生命']
    3. print(ne_zha)
    1
    2
    3
    4 我们看到字典 ne_zha 中的 <font style="color:rgb(71, 101, 130);">'最大生命': 7268</font> 被删除了。

    <font style="color:rgb(71, 101, 130);">del</font> 关键字也可以完全删除字典,语法规则为:<font style="color:rgb(71, 101, 130);">del 字典名</font>

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

    #4.2.4 <font style="color:rgb(71, 101, 130);">clear()</font>

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

    <font style="color:rgb(71, 101, 130);">clear()</font> 函数清空字典,语法规则为:<font style="color:rgb(71, 101, 130);">字典名.clear()</font>,运行下方语句:

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

    #5 复制字典

    在变量和列表中,我们可以通过 <font style="color:rgb(71, 101, 130);">name2 = name1</font> 的语句来将变量或者是列表的内容进行复制,但对于字典来说,是不能通过键入 <font style="color:rgb(71, 101, 130);">dict2 = dict1</font> 来复制字典。因为,<font style="color:rgb(71, 101, 130);">dict2</font> 只是对 <font style="color:rgb(71, 101, 130);">dict1</font> 的引用,而 <font style="color:rgb(71, 101, 130);">dict1</font> 中的更改也将自动在 <font style="color:rgb(71, 101, 130);">dict2</font> 中进行。有一些方法可以进行复制,一种方法是使用内建的字典方法 <font style="color:rgb(71, 101, 130);">copy()</font>,语法规则是 <font style="color:rgb(71, 101, 130);">字典名.copy()</font>,通过 <font style="color:rgb(71, 101, 130);">ne_zha_copy = ne_zha.copy()</font> 语句来实现列表 <font style="color:rgb(71, 101, 130);">ne_zha</font> 的复制,我们运行下方语句:
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. ne_zha_copy = ne_zha.copy()
    3. print(ne_zha_copy)
    1
    2
    3
    4 制作副本的另一种方法是使用内建方法 <font style="color:rgb(71, 101, 130);">dict()</font>,语法规则是 <font style="color:rgb(71, 101, 130);">dict(字典名)</font>,通过<font style="color:rgb(71, 101, 130);">ne_zha_copy = dict(ne_zha)</font> 语句来实现对字典 <font style="color:rgb(71, 101, 130);">ne_zha</font> 的复制,运行下方语句:
    1. ne_zha = {'英雄名字': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}
    2. ne_zha_copy = dict(ne_zha)
    3. print(ne_zha_copy)
    1
    2
    3
    4

    #6 使用 <font style="color:rgb(71, 101, 130);">dict()</font> 创建字典

    我们也可以使用 <font style="color:rgb(71, 101, 130);">dict()</font> 构造函数创建新的字典,语法规则为:<font style="color:rgb(71, 101, 130);">字典名 = dict(键名=键值, 键名=键值,..., 键名=键值)</font> python # 注意:1.关键字不是字符串字面量;2.使用了等号而不是冒号来赋值。 ne_zha = dict(英雄名字='哪吒', 最大生命=7268, 生命成长=270.4, 初始生命=3483, 最大法力=1808, 法力成长=97, 初始法力=450, 最高物攻=320, 物攻成长=11.5, 初始物攻=159, 最大物防=408, 物防成长=22.07, 初始物防=99) print(ne_zha) 1
    2
    3
    4

    #7 总结

    下面我们一起来看下本关总结:

    7字典-多类别 - 图5

    #8 练习题

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

    #8.1 向字典 <font style="color:rgb(71, 101, 130);">ne_zha = {'英雄': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}</font>中添加项目 <font style="color:rgb(71, 101, 130);">{'每5秒回血成长': 3.214}</font>

    #8.2 从字典 <font style="color:rgb(71, 101, 130);">ne_zha = {'英雄': '哪吒', '最大生命': 7268, '生命成长': 270.4, '初始生命': 3483, '最大法力': 1808, '法力成长': 97, '初始法力': 450, '最高物攻': 320, '物攻成长': 11.5, '初始物攻': 159, '最大物防': 408, '物防成长': 22.07, '初始物防': 99}</font>中删除项目 <font style="color:rgb(71, 101, 130);">{'初始物攻': 159}</font>

    更新于: 12/30/2021, 2:46:39 AM