注册 登录
Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元祖类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python项目实战

首页 > Python基础教程 > 第十二章: Python字典类型 > 12.1节:字典的基础概念

12.1节:字典的基础概念

薯条老师 2020-05-14 16:26:53 208602 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师的线下Python,Java小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Java后端开发。授课详情请点击:http://chipscoco.com/?cate=6

12.1.1 理解字典类型

在日常生活中,我们常常会接触到“字典”这种数据类型,例如一本书籍的目录结构,在目录结构中,通过查找页码,就可以快速翻到指定的页面。
如果没有这样的页码,那么我们必须从书籍的第一页开始,一页一页地查找。有了页码以后,直接翻到指定的页面。在Python中,可以通过字典来进行快速地查找。

Python中的字典类型是用{}符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。

image.png

字典中的元素”是一个键值对:

# 定义一个字典变量bookbook = {"第十二章-彻底掌握Python的字典类型": 210}
在上文代码中定义了一个字典类型变量book, book中只有一个元素。元素以英文冒号:进行分隔。在冒号左边的为键名,冒号右边的为键值。book中的键名表示书籍的章节目录名称,键值表示章节目录的页码。字典中的键名是唯一的,就如同在一本书籍中,不会出现相同的目录。
字典中的键名是唯一的,在列表和元组中可以保存多个相同的元素值。

12.1.2 字典的类型名

在交互模式中通过type来输出字典的类型名:
>>> book = {"第十二章-彻底掌握Python的字典类型": 210}
>>> type(book)
<class 'dict'>

从输出可知,字典的类型名为dict。

12.1.3 字典的定义

对字典进行定义,主要有对象定义法和直接定义法。
(1) 对象定义法
字典的类型名是dict,可以直接在交互模式中执行help(dict)来查找dict的定义及用法:
class dict(object)
|  dict() -> new empty dictionary
|  dict(mapping) -> new dictionary initialized from a mapping object's
|      (key, value) pairs
|  dict(iterable) -> new dictionary initialized as if via:
|      d = {}
|      for k, v in iterable:
|          d[k] = v
|  dict(**kwargs) -> new dictionary initialized with the name=value pairs
|      in the keyword argument list.  For example:  dict(one=1, two=2)

从交互模式的输出中,可看到如下四个定义字典的构造方法:
(1) dict()
(2) dict(mapping)
(3) dict(iterable)
(4) dict(**kwargs)

1.dict()
使用dict()构造一个空的字典。
代码实例:
# __desc__ = 通过dict()构造一个空的字典 
# 定义一个空的字典
book = dict() 

# 空值在条件判断中会自动转换为布尔类型False

if book:  
    print("book is not empty")
else:  
    print("book is empty")
2. dict(mapping)
使用mapping对象中的(key, value)键值对来构造一个有值的字典对象。
mapping对象是一个从键名到键值的映射对象。在Python中可以通过zip类型构造一个mapping格式的对象,给zip构造方法传递两个可迭代对象,例如:zip(iter1, iter2), 左边的可迭代对象iter1表示的是键名,右边的可迭代对象iter2表示的是键值,iter1中的键名与iter2中的键值一一对应。
代码实例:
# __desc__ = 使用zip类型来定义一个mapping对象 
# zip接受两个可迭代对象
# 元组是一种可迭代对象
# 迄今学过的可迭代对象有字符串,列表,元组

mapping = zip(("第十二章-彻底掌握Python的字典类型",), (210,)) 
# 使用mapping对象来构造字典对象
book = dict(mapping)
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210}
Python中的字典类型就是一种标准的mapping对象,我们可以在dict方法中传递一个字典对象来构造字典。
代码实例:
# __desc__ = 使用字典类型来构造一个mapping对象 
pair = {"第十二章-彻底掌握Python的字典类型": 210}
# 使用mapping对象来构造字典对象
book = dict(pair)
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210}
3. dict(iterable)
这里的iterable表示的是可迭代对象,可迭代对象存储了每一个键值对,键值对以列表或元组的形式存储于这个可迭代对象中。
可迭代对象既可以是列表,也可以是元组。
可迭代对象是列表的情况:
# 1.列表中保存的是列表
[[key, value],[key,value]] 
# 2.列表中保存的是元组
[(key, value),(key,value)]
可迭代对象是元组的情况:
# 1.元组中保存的是列表:
([key, value],[key,value]) 
# 2.元组中保存的是元组:
((key, value),(key,value))
代码实例:
# __desc__ = 通过可迭代对象来构造字典 
book = dict([["第十二章-彻底掌握Python的字典类型", 20]])
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210} 

book = dict((("第十二章-彻底掌握Python的字典类型", 20),))
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210}
4.dict(**kwargs)
这种构造方式是直接采用name=value的关键字参数形式来对字典进行构造,name表示的是键名,value表示的是键值,name必须符合变量名的规则, value必须是Python中的合法数据类型。
代码实例:
# 在dict构造方法中,name=value即表示一个键值对
book = dict(name="108节课彻底学通Python")
# book的输出为{"name": "108节课彻底学通Python"}
(2) 直接定义法
直接定义法是指直接通过字典的别名符号{}来进行定义。在{}中,键值对以英文逗号进行分隔。
代码实例:
# __desc__ = 直接通过{}来构造字典 
# 构造一个空的字典
book = {} 

# 构造一个有值的字典
book = {"name": "108节课彻底学通Python", "price": 0}

12.1.4 在循环中遍历字典

字典是一种可迭代对象,可以在for循环中遍历字典的键名。遍历字典的for循环结构:
for name in dict:  
    pass
代码实例:
# __desc__ = 在for循环中遍历字典的键名 
# 构造一个有值的字典
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 
for name in book:  
    # 执行dict[name]的语法,可以访问字典的键值  
    print(name, book[name])

12.1.5 字典的键类型

字典中的键名的数据类型必须是静态的数据类型,关于字典中的键类型为什么必须是静态的数据类型,在12.4节中会进行详细讲解。在本节内容中,同学们只需掌握字典的基础概念以及定义方法。
迄今为止学过的静态数据类型有简单数据类型,字符串,元组

12.1.6 知识要点

(1)Python中的字典类型是用{}符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。
(2)字典中的元素,是以:分隔的键值对,键值对之间以逗号进行分隔
(3)字典的类型名是dict,可通过对象定义法和直接定义法来定义字典
(4)列表,元组是一种线性的序列结构。
(5)字典也是一种可迭代对象,可以在for循环中直接遍历出字典的键名

12.1.7 高薪就业班

(1) Python后端工程师高薪就业班,月薪10K-15K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪10K-20K, 免费领取课程大纲
(4) Python大数据工程师就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:


欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录