Python入门教程+项目实战-12.1节: 字典的基础概念

news2024/11/23 16:56:46

目录

12.1.1 理解字典类型

12.1.2 字典的类型名

12.1.3 字典的定义

12.1.4 在循环中遍历字典

12.1.5 字典的键类型

12.1.6 知识要点

12.1.7 系统学习python


12.1.1 理解字典类型

在日常生活中,我们常常会接触到“字典”这种数据类型,例如一本书籍的目录结构,在目录结构中,通过查找页码,就可以快速翻到指定的页面。

如果没有这样的页码,那么我们必须从书籍的第一页开始,一页一页地查找。有了页码以后,直接翻到指定的页面。在Python中,可以通过字典来进行快速地查找。

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

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

Python

# 定义一个字典变量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()构造一个空的字典。

代码实例:

Python

# __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中的键值一一对应。

代码实例:

Python

# __desc__ = 使用zip类型来定义一个mapping对象 
# zip接受两个可迭代对象
# 元组是一种可迭代对象
# 迄今学过的可迭代对象有字符串,列表,元组

mapping = zip(("第十二章-彻底掌握Python的字典类型",), (210,)) 
# 使用mapping对象来构造字典对象
book = dict(mapping)
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210}

Python中的字典类型就是一种标准的mapping对象,我们可以在dict方法中传递一个字典对象来构造字典。

代码实例:

Python

# __desc__ = 使用字典类型来构造一个mapping对象 
pair = {"第十二章-彻底掌握Python的字典类型": 210}
# 使用mapping对象来构造字典对象
book = dict(pair)
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210}

3. dict(iterable)

这里的iterable表示的是可迭代对象,可迭代对象存储了每一个键值对,键值对以列表或元组的形式存储于这个可迭代对象中。可迭代对象既可以是列表,也可以是元组。可迭代对象是列表的情况:

Python

# 1.列表中保存的是列表
[[key, value],[key,value]] 
# 2.列表中保存的是元组
[(key, value),(key,value)]

可迭代对象是元组的情况:

Python

# 1.元组中保存的是列表:
([key, value],[key,value]) 
# 2.元组中保存的是元组:
((key, value),(key,value))

代码实例:

Python

# __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中的合法数据类型。

代码实例:

Python

# 在dict构造方法中,name=value即表示一个键值对
book = dict(name="108节课彻底学通Python")
# book的输出为{"name": "108节课彻底学通Python"}

(2) 直接定义法

直接定义法是指直接通过字典的别名符号{}来进行定义。在{}中,键值对以英文逗号进行分隔。

代码实例:

Python

# __desc__ = 直接通过{}来构造字典 
# 构造一个空的字典
book = {} 

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

12.1.4 在循环中遍历字典

字典是一种可迭代对象,可以在for循环中遍历字典的键名。遍历字典的for循环结构:

Python

for name in dict:  
    pass

代码实例:

Python

# __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 最具实力的小班培训

 薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习、量化投资。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/481936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

排序篇:直接插入、希尔、直接选择和堆排序(C语言)

目录 前言&#xff1a; 一&#xff1a;插入排序 (1)直接插入排序 基础思路(有个印象就行&#xff0c;主要看单趟)&#xff1a; 单趟排序&#xff1a; 完整排序&#xff1a; 时间复杂度分析&#xff1a; (2)希尔排序 基础思路(有个印象就行&#xff0c;主要看单趟)&#…

【2023 年第十三届 MathorCup 高校数学建模挑战赛】D 题 航空安全风险分析和飞行技术评估问题 27页论文及代码

【2023 年第十三届 MathorCup 高校数学建模挑战赛】D 题 航空安全风险分析和飞行技术评估问题 27页论文及代码 1 题目 D 题 航空安全风险分析和飞行技术评估问题 飞行安全是民航运输业赖以生存和发展的基础。随着我国民航业的快速发展&#xff0c;针对飞行安全问题的研究显得…

网络编程 总结一

一、网络基础&#xff1a; 概念&#xff1a;1> 网络编程的本质就是进程间的通信&#xff0c;只不过进程分布在不同的主机上 2>在跨主机传输过程中&#xff0c;需要确定通信协议后&#xff0c;才可以通信 1. OSI体系结构&#xff08;重点&#xff09; 定义7层模型&…

针对近日ChatGPT账号大批量封禁的理性分析

文 / 高扬 这两天不太平。 3月31号&#xff0c;不少技术圈的朋友和我闲聊说&#xff0c;ChatGPT账号不能注册了。 我不以为然&#xff0c;自己有一个号足够了&#xff0c;并不关注账号注册的事情。 后面又有不少朋友和我说ChatGPT账号全部不能注册了&#xff0c;因为老美要封锁…

Java笔记_15(不可变集合、Stream流、方法引用)

Java笔记_15 一、创建不可变集合1.1、创建不可变集合的应用场景1.2、创建不可变集合的书写格式 二、Stream流2.1、体验Stream流2.2、Stream流的思想和获取Stream流2.3、Stream流的中间方法2.4、Stream流的终结方法2.5、收集方法collect2.6、练习-数字过滤2.7、练习-字符串过滤并…

Python词云图的制作与案例分享(包含 wordcloud 和 jieba库)

一、基本知识 Python 有很多可用于制作词云图的库&#xff0c;其中比较常用的有 wordcloud 和 jieba。 wordcloud 是一个用于生成词云图的 Python 库&#xff0c;其使用了 Python 的 PIL 库和 numpy 库。您可以使用 pip 命令来安装 wordcloud 库&#xff1a; pip install wo…

第12章 项目沟通管理和干系人管理

文章目录 12.1.2 沟通的方式 404沟通管理计划的编制过程12.2.2 制订沟通管理计划的工具 4114、沟通方法 12.3.2 管理沟通的工具 41312.4.2 控制沟通的技术和方法 4163、会议 12.5.1 项目干系人管理所涉及的过程 420项目干系人管理的具体内容&#xff1a;&#xff08;1&#xff…

从“青铜”到“王者”,制造企业的数字化闯关记

打过游戏的朋友可能有一个常识&#xff0c;越是精彩纷呈、奖励丰厚的副本&#xff0c;越是需要召集队友一同组团闯关。很多实体企业在数字化转型中&#xff0c;也不会单打独斗&#xff0c;一把手会先找咨询公司对企业内外情况进行调研、梳理、规划&#xff0c;提出一个顶层规划…

科学计算库—numpy随笔【五一创作】

文章目录 8.1、numpy8.1.1、为什么用 numpy&#xff1f;8.1.2、numpy 数据类型推理8.1.3、numpy 指定长度数组快速创建8.1.4、numpy 哪个是行、列&#xff1f;8.1.5、numpy 如何进行数据类型转换&#xff1f;8.1.6、numpy 有几种乘法&#xff1f;8.1.7、numpy 索引和切片操作8.…

2023年前端面试题汇总-代码输出篇

1. 异步 & 事件循环 1. 代码输出结果 const promise new Promise((resolve, reject) > {console.log(1);console.log(2); }); promise.then(() > {console.log(3); }); console.log(4); 输出结果如下&#xff1a; 1 2 4 promise.then 是微任务&#xff0c;它…

【今日重磅—国产大模型首批内测机会来了】什么是讯飞星火,如何获得内测和使用方法

♥️作者&#xff1a;白日参商 &#x1f935;‍♂️个人主页&#xff1a;白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

数电实验:Quartus II 软件使用 (八进制计数器和全加器)

一、实验目的&#xff1a; 1.熟悉可编程逻辑器件的设计工具Quartus II 软件的使用。 2.熟悉FPGA开发实验系统的软件环境&#xff0c;掌握各个菜单和图标的作用和功能。 二、实验内容 &#xff08;1&#xff09;以74160实现八进制计数器为例&#xff0c;学Quartus II 软件的…

【手撕代码系列】JS手写实现Promise.all

Promise.all() 方法接收一个 Promise 对象数组作为参数&#xff0c;返回一个新的 Promise 对象。该 Promise 对象在所有的 Promise 对象都成功时才会成功&#xff0c;其中一个 Promise 对象失败时&#xff0c;则该 Promise 对象立即失败。 本篇博客将手写实现 Promise.all() 方…

Peforce(Helix) 使用快速介绍

虽然Git应该是当下使用最多的版本控管工具&#xff0c; 但曾经作为版本控管巨头的Perforce还是在持续的发展和更新中&#xff0c; 在某些企业中&#xff0c;还是作为软件的版本控管工具之一。 Helix 截止2023, Perforce 的最新版本的名称是Helix ,这个词翻译的意思是螺旋&…

【手撕代码系列】JS手写实现Promise.race

公众号&#xff1a;Code程序人生&#xff0c;分享前端所见所闻。 Promise.race() 是一个常见的 JavaScript Promise 方法&#xff0c;它接受一个 Promise 数组作为参数&#xff0c;并返回一个新的 Promise 对象。这个新的 Promise 对象在传入的 Promise 数组中&#xff0c;任意…

[架构之路-158]-《软考-系统分析师》-13-系统设计 - 高内聚低耦合详解、图解以及技术手段

目录 第1章 什么是高内聚低耦合 1.1 概念 1.2 目的 1.3 什么时候需要进行高内聚低耦合 1.4 什么系统需要关注高内聚、低耦合 第2章 分类 2.1 内聚的分类 2.2 耦合的分类 第3章 增加高内聚降低耦合度的方法 3.1 增加高内聚 3.2 降低耦合度 第1章 什么是高内聚低耦…

seurat -- 关于DE gene的讨论

实例 # 加载演示数据集 library(Seurat) library(SeuratData) pbmc <- LoadData("pbmc3k", type "pbmc3k.final")# list options for groups to perform differential expression on levels(pbmc)## [1] "Naive CD4 T" "Memory CD4 T…

Orangepi Zero2 全志H616(DHT11温湿度检测)

最近在学习Linux应用和安卓开发过程中&#xff0c;打算把Linux实现的温湿度显示安卓app上&#xff0c;于是在此之前先基于Orangepi Zero2 全志H616下的wiringPi库对DHT11进行开发&#xff0c;本文主要记录开发过程的一些问题和细节&#xff0c;主要简单通过开启线程来接收温湿度…

LeetCode1376. 通知所有员工所需的时间

【LetMeFly】1376.通知所有员工所需的时间 力扣题目链接&#xff1a;https://leetcode.cn/problems/time-needed-to-inform-all-employees/ 公司里有 n 名员工&#xff0c;每个员工的 ID 都是独一无二的&#xff0c;编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。…