字典的创建和删除

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

在Python中,字典与列表类似,也是可变序列,不过与列表不同,它是无序的可变序列,保存的内容是以“键-值对”的形式存放的。这类似于我们的新华字典,它可以把拼音和汉字关联起来,通过音节表可以快速找到想要的汉字。其中新华字典里的音节表相当于键(key),而对应的汉字,相当于值(value)。键是唯一的,而值可以有多个。字典在定义一个包含多个命名字段的对象时,很有用。

字典的主要特征如下:

l  通过键而不是通过索引来读取

字典有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。

l  字典是任意对象的无序集合

字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序。这样可以提高查找效率。

l  字典是可变的,并且可以任意嵌套

字典可以在原处增长或者缩短(无须生成一个副本)。并且它支持任意深度的嵌套(即它的值可以是列表或者其他的字典)。

l  字典中的键必须唯一

不允许同一个键出现两次,如果出现两次,则后一个值会被记住。

l  字典中的键必须不可变

字典中的键是不可变的,所以可以使用数字、字符串或者元组,但不能使用列表。

说明:Python中的字典相当于Java或者C++中的Map对象。

定义字典时,每个元素都包含两个部分“键”和“值”。以水果名称和价格的字典为例,键为水果名称,值为水果价格,如图22所示。

图22  字典示意图

创建字典时,在“键”和“值”之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一对“{}”中。语法格式如下:

dictionary = {'key1':'value1', 'key2':'value2',  …, 'keyn':'valuen',}

参数说明:

l   dictionary:表示字典名称。

l   key1、key2…keyn:表示元素的键,必须是唯一的,并且不可变,例如,可以是字符串、数字或者元组。

l   value1、value2…valuen:表示元素的值,可以是任何数据类型,不是必须唯一的。

例如,创建一个保存通讯录信息的字典,可以使用下面的代码:

dictionary = {'qq':'84978981','明日科技':'84978982','无语':'0431-84978981'}

print(dictionary)

执行结果如下:

{'qq': '84978981', '明日科技': '84978982', '无语': '0431-84978981'}

同列表和元组一样,也可以创建空字典。在Python中,可以使用下面两种方法创建空字典:

dictionary = {}

或者

dictionary = dict()

Python中的dict()方法除了可以创建一个空字典外,还可以通过已有数据快速创建字典。主要表现为以下两种形式:

(1)通过映射函数创建字典

通过映射函数创建字典的语法如下:

dictionary = dict(zip(list1,list2))

参数说明:

l   dictionary:表示字典名称。

l   zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想获取元组,可以将zip对象使用tuple()函数转换为元组;如果想获取列表,则可以使用list()函数将其转换为列表。

说明:在Python 2.x中,zip()函数返回的内容为包含元组的列表。

l  list1:一个列表,用于指定要生成字典的键。

l  list2:一个列表,用于指定要生成字典的值。如果list1和list2的长度不同,则与最短的列表长度相同。

场景模拟:某大学的寝室里住着4位美女,将她们的名字保存在一个列表中,将她们每个人的星座对应保存在另一个列表中。

图标 (35)

  实例09  创建一个保存女神星座的字典

在IDLE中创建一个名称为sign_create.py的文件,然后在该文件中,定义两个包括4个元素的列表,再应用dict()函数和zip()函数将前两个列表转换为对应的字典,并且输出该字典,代码如下:

name = ['绮梦','冷伊一','香凝','黛兰']            # 作为键的列表

sign = ['水瓶座','射手座','双鱼座','双子座']          # 作为值的列表

dictionary = dict(zip(name,sign))                # 转换为字典

print(dictionary)                                # 输出转换后字典

运行实例后,将显示如图23所示的结果。

图23  创建一个保存女神星座的字典

(2)通过给定的关键字参数创建字典

通过给定的关键字参数创建字典的语法如下:

dictionary = dict(key1=value1,key2=value2,…,keyn=valuen)

参数说明:

l   dictionary:表示字典名称。

l   key1,key2,…,keyn:表示参数名,必须是唯一的,并且符合Python标识符的命名规则。该参数名会转换为字典的键。

l   value1,value2,…,valuen:表示参数值,可以是任何数据类型,不必须唯一。该参数值将被转换为字典的值。

例如,将实例09中的名字和星座以关键字参数的形式创建一个字典,可以使用下面的代码:

dictionary =dict(绮梦 = '水瓶座', 冷伊一 = '射手座', 香凝 = '双鱼座', 黛兰 = '双子座')

print(dictionary)

在Python中,还可以使用dict对象的fromkeys()方法创建值为空的字典,语法如下:

dictionary = dict.fromkeys(list1)

参数说明:

l  dictionary:表示字典名称。

l  list1:作为字典的键的列表。

例如,创建一个只包括名字的字典,可以使用下面的代码:

name_list = ['绮梦','冷伊一','香凝','黛兰']           # 作为键的列表

dictionary = dict.fromkeys(name_list)

print(dictionary)

执行结果如下:

{'绮梦': None, '冷伊一': None, '香凝': None, '黛兰': None}

另外,还可以通过已经存在的元组和列表创建字典。例如,创建一个保存名字的元组和保存星座的列表,通过它们创建一个字典,可以使用下面的代码:

name_tuple = ('绮梦','冷伊一', '香凝', '黛兰')          # 作为键的元组

sign = ['水瓶座','射手座','双鱼座','双子座']            # 作为值的列表

dict1 = {name_tuple:sign}                          # 创建字典

print(dict1)

执行结果如下:

{('绮梦', '冷伊一', '香凝', '黛兰'): ['水瓶座', '射手座', '双鱼座', '双子座']}

如果将作为键的元组修改为列表,再创建一个字典,代码如下:

name_list = ['绮梦','冷伊一', '香凝', '黛兰']         # 作为键的列表

sign = ['水瓶座','射手座','双鱼座','双子座']            # 作为值的列表

dict1 = {name_list:sign}                            # 创建字典

print(dict1)

执行结果如图24所示。

图24  将列表作为字典的键产生的异常

同列表和元组一样,不再需要的字典也可以使用del命令删除整个字典。例如,通过下面的代码即可将已经定义的字典删除。

del dictionary

另外,如果只是想删除字典的全部元素,可以使用字典对象的clear()方法实现。执行clear()方法后,原字典将变为空字典。例如,下面的代码将清除字典的全部元素。

dictionary.clear()

除了上面介绍的方法可以删除字典元素,还可以使用字典对象的pop()方法删除并返回指定“键”的元素,以及使用字典对象的popitem()方法删除并返回字典中的一个元素。

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

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

相关文章

pip换源ubuntu

到THU网站上有给定的教程 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ 方法1 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package然后在https://pypi.org/project/nvidia-cublas-cu12/#files 里面搜索你的包名 方法2 python -m pip install --upg…

决策树|随机森林 GBDT XGBoost|集成学习

文章目录 1 决策树模型1.1 决策树模型简介1.2 决策树模型核心问题1.2.1 分类划分标准1.2.1.1 信息增益1.2.1.2 增益率1.2.1.3 基尼系数 1.2.2 停止生长策略1.2.3 剪枝策略 1.3 决策树 - python代码1.3.1 结果解读1.3.2 决策树可视化1.3.3 CV - 留一法 2 集成学习2.1 Boosting2.…

cin-getline缓存区

更多资源请关注纽扣编程微信公众号 cin.sync()清除缓存区 如果需要输入如下内容 3 This is C language. This is JAVA language. This is Python language. 写如下程序 #include<bits/stdc.h> using namespace std; string str[100]; int main(){int n;cin>&…

4-主窗口

4-主窗口 1、简介2 菜单栏、工具栏、状态栏2.1 菜单栏2.2 QAction2.3 工具栏2.4 状态栏 3 混合方式UI设计 1、简介 QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏、多个工具栏、多个停靠控件、一个状态栏以及一个中心控件&#xff0c;是许多应用程序&…

Visual Studio 下的Qt工程无法打开 “xxx.ui“ 文件和LNK1104 无法打开文件“Qt5Cored.lib”错误

一、问题&#xff1a; VS下Qt环境准备好后&#xff0c;创建了Qt工程然后点击 Form Files 下的 “xxx.ui” 文件&#xff0c;在弹出 Qt 设计师 界面后闪退并显示如下错误&#xff1a; 二、解决 1、工具栏处依次点击&#xff1a;扩展 一> Qt VS Tools 一> options 弹出选…

网络工程师---第四十二天

1、基于子网的vlan划分配置步骤是什么&#xff1f; 2、基于端口的vlan划分配置步骤是什么&#xff1f; 3、基于MAC地址的vlan划分配置步骤是什么&#xff1f; 4、请简述无线局域网的组网方式有哪几种&#xff0c;区别是什么&#xff1f; 5、请简述堆叠、级联和集群作用和区别是…

在kaggle中的notebook 如何自定义 cuda 版本以及如何使用自定义的conda或python版本运行项目(一)

问题 第一部分 当前kaggle中带有gpu的notebook 默认的cuda 是12.1版本&#xff0c;如果我要跑一个项目是11.3的&#xff0c;如何将默认的cuda 改为自己需要的cuda 11.3 方法 step1 从官网下载需要的版本cuda run 文件&#xff08;如cuda 11.3&#xff09; 在nvidia cuda 下…

基于Netty实现安全认证的WebSocket(wss)服务端

1.Netty服务端 服务端代码参考【基于Netty实现WebSocket服务端-CSDN博客】中的两种方式都可以&#xff1b;这里用的是第一种简单方式。 新增如下逻辑&#xff1a;添加SSLHandler SSLContext sslContext SslUtil.createSSLContext("JKS","D:\\workSpace\\day…

Web(数字媒体)期末作业

一.前言 1.本资源为类似于打飞机的网页游戏 2.链接如下&#xff1a;【免费】前端web或者数字媒体的期末作业&#xff08;类似于打飞机的2D网页小游戏&#xff09;资源-CSDN文库 二.介绍文档

SAP HCM 标准程序如何定位内表赋值 ABAP DEBUG SCRIPT

Complacency is the enemy of study 学习的敌人是自己的满足。 标准内表定位代码位置!!! 不知道大家有没有尝试体会过debug标准程序,debug过程中发现SAP标准的内表不知道什么时候赋值,或者类的静态属性什么时候改变的,本文通过ABAP DEBUG SCRIPT的方式快速定位内表赋值或者类…

VM中Ubuntu16.04的下载以及ROS—kinetic的版本下载

一、Ubuntu镜像地址 转载备份一下&#xff1b; 官方下载地址&#xff08;不推荐&#xff09; https://www.ubuntu.com/downloadhttps://www.ubuntu.com/download 中科大源 Index of /ubuntu-releases/16.04/http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/ 阿里云开…

基于51单片机的电压表-数码管显示

一.硬件方案 本设计基于STC89C52单片机的一种电压测量电路&#xff0c;该电路采用ADC0832A/D转换芯片,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单, 可以测量0&#xff5e;9V的电压值,并在四位LED数码管上显示电压值。 二.设计功能 &#xff08;1&…

工业网关设备:HiWoo Box网关

在数字化、智能化的工业浪潮中&#xff0c;工业网关以其卓越的性能和广泛的应用场景&#xff0c;成为了工业互联的核心驱动力。作为一款高效、稳定、智能的工业网关设备&#xff0c;HiWoo Box网关不仅实现了工业现场设备与网络的高效连接&#xff0c;更为企业提供了智能化的数据…

【linux】linux中免交互命令expect原理与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

智能客服新突破:大型模型训练助力提升客户服务体验

项目场景&#xff1a;训练大模型智能客服 智能客服新方法在金融服务领域的科技前沿应用 ** 一、 引言 随着科技的飞速发展&#xff0c;智能客服作为金融服务领域的一大创新点&#xff0c;正在逐渐改变传统的客户服务模式。特别是在自然语言处理&#xff08;NLP&#xff09;等…

【C++】多态:编程中的“一人千面”艺术

目录 一、多态的概念二、多态的定义及实现1.多态的构成条件2.虚函数的重写2.1 什么是虚函数&#xff1f;2.2 虚函数的重写是什么&#xff1f;2.3 虚函数重写的两个例外2.4 C11 override 和 final2.5 重载、覆盖(重写)、隐藏(重定义)的对比 三、抽象类3.1 概念3.2 接口继承和实现…

重学java 47.集合 ② 迭代器

金榜题名&#xff0c;前程似锦 —— 24.5.27 一、迭代器的介绍和使用 1.概述 Iterator接口 2.主要作用 遍历集合 3.获取 Collection中的方法&#xff1a; Iterator<E> iterator() 4.方法 boolean hasNext() —> 判断集合中有没有下一个元素 E.next() —> 获取下一个…

《QT实用小工具·六十六》基于QT开发的界面收缩栏

1、概述 源码放在文章末尾 该项目实现了一个界面收缩栏的效果&#xff0c;该收缩栏包含如下功能&#xff1a; 1、可以在收缩栏中添加若干个界面 2、鼠标点击收缩栏可以展开或收起界面 3、鼠标拖动收缩栏可以和其他界面互换位置 项目demo演示如下所示&#xff1a; 使用方式&…

jenkins 用户权限(Manage-Roles)

本次需求将DEV环境和SIT环境分开,SIT用户登录上来只能看他的SIT项目和视图 安装roles插件 进入 manage role 项目授权 用户 正则匹配你需要的项目 dev .*-dev*或者.*-dev$ sit .*-sit最后细分assign role 测试使用sit账号登录 ,视图和项目都是SIT账号的

移动云:开发者手中的未来钥匙

《移动云&#xff1a;开发者手中的未来钥匙》 引言一、无缝集成&#xff0c;加速开发进程二、数据智能&#xff0c;洞悉用户心声三、安全合规&#xff0c;护航创新之旅四、成本优化&#xff0c;助力轻装前行总结 引言 在科技日新月异的今天&#xff0c;移动云已成为推动行业变革…