Python 从入门到实战8(字典)

news2024/11/15 12:23:36

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

      上篇文章我们通过举例学习了python 中元组的定义及相关操作。今天详细讲述字典的定义及相关的操作,也是经常使用到的。

1、字典的定义

字典是由{}括住的,内容以“键-值对”的形式存储的无序序列。

字典的主要特点如下:

  1. 字典是通过键来读取的,不是像列表那样使用索引读取;
  2. 字典是无序的,各项是从左到右随机排序的,保存在字典中的项没有特定的顺序;
  3. 字典是可变的,可以进行嵌套;
  4. 字典中的键必须是唯一的。不允许同一个键出现两次;
  5. 字典中的键必须不可变,所以可以使用数字、字符串、或者元组来作为键,不可使用列表。

2、字典的创建

1)使用定义创建字典

使用定义的方法创建字典,语法如下:

 dictionary_name = {“key1”:”value1”, “key2”:”value2”, “key3”:”value3”,…, “keyn”:”valuen”}

参数说明:dictionary_name  为字典的名称

“key1”:”value1”  :为键-值

举例说明:

dictionary_name = {"username":"张三","sex":"男","address":"北京天安城楼"}
print(dictionary_name)

输出结果:

创建空子典:

dictionary_emp = {}
print(dictionary_emp)

输出:{}

2)通过映射函数创建字典

具体的语法参考:dictionary_name = dict(zip(list1,list2))

参数说明:zip() 函数用于将多个列表或者元组对应位置的元素组合为元组。

List1:表示一个列表,用于指定要生成字典的键

List2: 表示一个列表,用于指定要生成字典的值

举例说明:例如家庭成员分别对应的年龄

family_name = ["爸爸","妈妈","哥哥","姐姐","小米"]
years_old = [40,43,12,11,5]
dictionary_family = dict(zip(family_name,years_old)) #通过dict(zip()) 来创建字典
print(dictionary_family)

输出结果:

3)通过给定的键-值对 创建字典

语法格式:dictionary_name = dict(key 1 =value 1, key 2=value 2, key 3=value 3,…key n=value n)

就是dict(键=值,….),比较简单,我们直接举例说明。

dict_name = dict(爸爸=40,妈妈=43,哥哥=12)   #注意,不要写成了“爸爸”
print(dict_name)

输出结果如下:

{'爸爸': 40, '妈妈': 43, '哥哥': 12}

另外,还可以使用dict 对象的fromkeys() 方法创建值为空的字典。

参考:dict_name = dict. Fromkeys(list1)   #创建list1为键,值为空的字典

举个例子:

family = ["爸爸","妈妈","哥哥","姐姐","小米"]
dict_name_f = dict.fromkeys(family)
print(dict_name_f)

输出结果:

{'爸爸': None, '妈妈': None, '哥哥': None, '姐姐': None, '小米': None}

3、字典的删除和清空

删除字典:del dict_name     #删除整个字典

清空字典:dict_name.clear    #删除字典中全部元素

比较简单,大家有个印象就好。

4、访问字典的操作

1)输出整个字典

Print(dict_name)

这个比较简单,前面一直在使用了。

2)通过键访问字典

{'爸爸': 40, '妈妈': 43, '哥哥': 12, '姐姐': 11, '小米': 5}

假如上面的字典,对应的家庭成员相应的年龄,想要获取小米的年龄

对应代码:Dict[对应的键]

family_name = ["爸爸","妈妈","哥哥","姐姐","小米"]
years_old = [40,43,12,11,5]
dictionary_family = dict(zip(family_name,years_old))
print(dictionary_family)
print(dictionary_family["小米"])

输出:

另外,还可以使用字典对象的get()方法获取指定键的值

语法格式:dict_name.get(key[,default])

参数说明:key  是指定的键,default 是可选项,用于当指定的键不存在时,返回一个默认值,如果省略返回None

举个小栗子:

family_name = ["爸爸","妈妈","哥哥","姐姐","小米"]
years_old = [40,43,12,11,5]
dictionary_family = dict(zip(family_name,years_old))
print(dictionary_family)
print(dictionary_family.get("小米"))
print(dictionary_family.get("弟弟"))
print(dictionary_family.get("弟弟","字典里没有这个人"))

输出结果:

5、遍历字典

1)使用字典item()方法访问字典

使用方法:dict_name.items()

Item()方法的返回值是可遍历的“键-值对”元组列表。输出字典全部“键-值对”方法:

family_name = ["爸爸","妈妈","哥哥","姐姐","小米"]
years_old = [40,43,12,11,5]
dictionary_family = dict(zip(family_name,years_old))
print(dictionary_family)
for item in dictionary_family.items():
    print(item)

输出:

2)循环输出键-值

分别输出key和value:

family_name = ["爸爸","妈妈","哥哥","姐姐","小米"]
years_old = [40,43,12,11,5]
dictionary_family = dict(zip(family_name,years_old))
print(dictionary_family)
for key,value in dictionary_family.items():
    print(key,"的年龄是:",value)

输出如下;

6字典中添加元素

添加元素方法:dict_name [key] = value

比较容易理解,直接举例:家庭的字典添加了妹妹

family_name = ["爸爸","妈妈","哥哥","姐姐","小米"]
years_old = [40,43,12,11,5]
dictionary_family = dict(zip(family_name,years_old))
print(dictionary_family)
dictionary_family ["妹妹"] = 3
print(dictionary_family)

7、字典里修改元素

字典的键不能重复,直接添加元素,但是键和已有相同就会覆盖对应键的值,从而来完成修改:

将上面小米修改为8岁:

family_name = ["爸爸","妈妈","哥哥","姐姐","小米"]
years_old = [40,43,12,11,5]
dictionary_family = dict(zip(family_name,years_old))
print(dictionary_family)
dictionary_family ["小米"] = 8

8、删除字典中元素

语法:  del dict_name[key]

如:删除小米这个成员信息

9、字典推导式

使用字典的推导式可以快速的生成一个字典。例如:我们生成包含5个随机数的字典,

其中字典的键使用数字表示:

import random
random_dict = {i:random.randint(100,1000) for i in range(10,15)}
print(random_dict)

输出:

{10: 177, 11: 819, 12: 889, 13: 622, 14: 532}

今天先写到这里了,每天进步一点点。今天你加油了吗!

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

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

相关文章

css弹性盒子——flex布局

目录 ​编辑 一、flex容器的样式属性(父元素属性) display:flex 弹性盒子,实现水平排列,在父盒子设置,适用于单行/单列 justify-content 二、flex元素的样式属性(子元素属性) 1.flex-grow 2.flex-shrink 3.flex-basis 4.flex组合属性 flex:flex-…

【WPS Excel】复制表格时,提示“图片太大,超过部份将被截去“ 问题

WPS表格 2019版本 升级到 WPS最新版 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 使用最新版就能够解决这个问题,如果仍旧无法解决可以勾选如下配置 重启Excel解决。 请勾选:文件 - 选项 - 编辑 - 不提示且不压缩文件中的图像

无需更换摄像头,无需施工改造,降低智能化升级成本的智慧工业开源了。

智慧工业视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上…

Linux系统下载并配置vscode(无废话)写C++

首先下载visual studio code 1.可以在应用商店下载 2.进入vscode官网Documentation for Visual Studio Code点击download>>点击下载.rpm 下载好之后打开vscode,先下载中文拓展(可省略) 然后下载c语言拓展 下载完之后打开设置&#xf…

Vue 使用接口返回的背景图片和拼图图片进行滑动拼图验证

一、背景 前两天发了一篇 vue-monoplasty-slide-verify 滑动验证码插件使用及踩坑_vue-monoplasty-slide-verify 引用后不显示-CSDN博客 这两天项目又需要通过接口校验,接口返回了背景图片和拼图图片,于是在网上找了一篇帖子,vue 图片滑动…

了解一下HTTP 与 HTTPS 的区别

介绍: HTTP是超文本传输协议。规定了客户端(通常是浏览器)和服务器之间如何传输超文本,也就是包含链接的文本。通常使用TCP【1】/IP协议来传输数据,默认端口为80。 HTTPS是超文本传输安全协议,具有CA证书。…

羲和能源大数据平台——Python数据绘图方法

1. 写在前面 目前论文对绘图的美观度要求越来越高,在气象领域呈现维度高,时空关联的特性,为了充分展示数据在各个维度的特性,选用合适的绘图方法至关重要,下图给出了如今在科研领域中个常用的各类图像:线型…

远程教育与学习:探索远程控制技术在教育领域的新机遇

什么适合会用到远程控制工具?如果你是运维、是设计或者外勤需要办公的一些资料文件,有远程控制工具工具的话就能轻松解决这些情况。为了保证电脑的安全我建议从官方网站进行下载,比如从向日葵远程控制官网下载就可以得到向日葵的官方正版。这…

Docker Container 常用命令

文章目录 目录 文章目录 1 . 什么是容器? 2 . 容器命令清单 docker create docker run docker ps docker logs docker exec docker kill docker container inspect docker cp docker rm docker export 总结 1 . 什么是容器? 通俗地讲&a…

C++设计模式——Command命令模式

一,命令模式的定义 命令模式是一种行为型设计模式。在实际开发场景中,命令模式将一个请求的处理或者一个具体操作封装为一个对象,从而可以让开发者根据不同的请求参数来生成不同的执行函数。 命令模式的本质是对具体命令的拆解和封装&#…

【Git远程仓库】将本地仓库推送到github(踩坑记录)

上一篇博客已经介绍了git本地仓库的基本操作,接下来记录一下如何将本地仓库上传到远程仓库中 远程仓库:托管在因特网的版本库,保存版本库的历史记录,多人协作 1. 创建远程版本库,得到远程仓库git地址 2. 本地仓库添加…

C#复习之内部类和分布类

知识点一:内部类 知识点二:分布类 知识点三:分部方法

DisplayManagerService启动-Android13

DisplayManagerService启动-Android13 1、DisplayManagerService启动1.1 简要时序图 2、DEFAULT_DISPLAY主屏幕添加3、默认屏幕亮度 1、DisplayManagerService启动 1.1 简要时序图 2、DEFAULT_DISPLAY主屏幕添加 3、默认屏幕亮度

C#复习之继承的基本规则

知识点一:基本概念 知识点二:基本语法 知识点三:实例 知识点四:访问修饰符的影响 知识点五:子类和父类的同名成员 总结:

MIT线性代数

本文链接的原创作者为 浊酒南街https://blog.csdn.net/weixin_43597208 第1讲 MIT_线性代数笔记:第 01 讲 行图像和列图像-CSDN博客 第2讲 MIT_线性代数笔记:第 02 讲 矩阵消元_矩阵first pivot-CSDN博客 第3讲 MIT_线性代数笔记:第 03…

反弹shell介绍和应用

一、什么是反弹shell 1 .含义 反向连接弹shell(即反弹shell为攻击者为服务端,受害者主机为客户端主动连接攻击者的服务端) 2 .目的 对方主机在外网无法访问 对方主机防火墙限制,只能发送请求,不能接收请求 对方IP动态变化 攻击了一台主机需要在自己的机器上…

3D一览通助力成都派铂宇航航天管道设计交付

在航空航天这一高精尖行业中,每一处细节都承载着不可估量的责任与使命。特别是在航天航空管道设计制造的复杂供应链中,任何误差都可能引发连锁反应,影响整体性能乃至安全。当前,航空航天行业面临的一大挑战在于如何有效管理这一复…

【数据结构】LinkedList ------ java实现

知识框架图&#xff1a; LinkedList是一种常用的数据结构。底层是一个双向链表。每个节点包含数据以及指向前一个节点和后一个节点的引用。 一&#xff1a;LinkedList的使用 1.1 LinkedList的构造方法 方法 解释LinkedList() 无参构造public LinkedList(Collection<? exte…

【教程】MySQL数据库学习笔记(六)——数据查询语言DQL(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 第四章 《数据操…

Day16_0.1基础学习MATLAB学习小技巧总结(16)——元胞数组

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍&#xff0c;为了在这个过程中加深印象&#xff0c;也为了能够有所足迹&#xff0c;我会把自己的学习总结发在专栏中&#xff0c;以便学习交流。 素材来源“数学建模清风” 特此说明&#xff1a;本博客的内容只在于总结在…