【Python基础014】字典的用法

1、定义

        Python中的字典(dict)与列表、元组都不同,它不是序列,而是一种映射(mapping)。映射是一个其他对象的集合,但是它们是使用键-值(key-value)来存储对象,具有极快的查找速度。字典是另一种可变容器模型,且可存储任意类型对象,同列表一样,可以就地改变并随着需求增大或减小。字典的每个键值对(key=>value)用冒号(:)分割,每对之间用逗号(,)分割,整个字典包括在花括号({})中 ,语法格式如下:

d = {key1 : value1, key2 : value2 }

        列表中通过“下表数字”来找到对应的对象。字典中通过“键对象”找到对应的“值对象”。“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是,列表、字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。“值”可以是任意的数据,并且可以重复。

2、创建

        (1)通过{}、dict()创建

a = {} # {}b = dict() # {}c = {'name': 'Python', 'age': 18, 'role': 'computer language'} # {'name':'Python', 'age':18, 'role': 'computer language'}d = dict(name = 'Python', age = 18, role= 'computer language') # {'name':'Python', 'age':18, 'role': 'computer language'}e = dict([('name', 'Python'), ('age', 18), ('role', 'computer language')]) # {'name':'Python', 'age':18, 'role': 'computer language'}

        (2)通过zip()创建

list1 = ['name', 'age', 'role']list2 = ['Python', 18, 'computer language']dict1 = dict(zip(list1, list2)) # {'name':'Python', 'age':18, 'role': 'computer language'}

        (3)通过formkeys创建值为空的字典

a = dict.fromkeys((),) # {} fromkeys里面需要传递的1~2个参数,第一个参数为键,第二参数为值(值不传递则为空)。当传递一个参数时,这个参数可以是字符串、列表、元组,若为空则生成空字典,否则生成值为空的字典;b = dict.fromkeys('123') # {'123': None}c = dict.fromkeys(['123']) # {'123': None}d = dict.fromkeys(['name', 'age', 'role']) # {'name': None, 'age': None, 'role': None}e = dict.fromkeys(['name', 'age', 'role'], 1) # {'name': 1, 'age': 1, 'role': 1}f = dict.fromkeys(['name', 'age', 'role'], [1, 2, 3]) # {'name': [1, 2, 3], 'age': [1, 2, 3], 'role': [1, 2, 3]}

3、访问

        (1)使用“键”来获得“值”

dict1 = {'name': 'Python', 'age': 18, 'role': 'computer language'}dict1['name'] # Pythondict1['age'] # 18dict1['role'] # computer language

        使用这种方法来访问字典时,如果键不存在,会抛出异常,如:

dict1['job']

Traceback (most recent call last):

File "", line 1, in

KeyError: 'job'

        因此可以使用get方法来获取值

        (2)get方法获取“值”

dict1 = {'name': 'Python', 'age': 18, 'role': 'computer language'}dict1.get('name') # Pythondict1.get('age') # 18dict1.get('role') # computer languagedict1.get('job') # None

4、常见操作

        (1)添加、修改字典

        给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。

dict1 = {'name': 'Python', 'age': 18, 'role': 'computer language'}dict1['object'] = 'everybody' # object的键不存在,则新增dict1['age'] = 20 # age的键存在,则修改print(dict1) # {'name': 'Python', 'age': 20, 'role': 'computer language', 'object': 'everybody'}

        (2)更新字典

        update 方法可以用一个字典中的元素更新另外一个字典。该方法接收一个参数。该参数表示用作更新数据的字典数据源。如果被更新的字典key 有重复,则直接覆盖。

dict1 = {'name': 'Python', 'age': 18, 'role': 'computer language'}dict2 = {'name': 'c', 'potentiality': 1000, 'sex': 'male'}dict1.update(dict2)print(dict1) # {'name': 'c', 'age': 18, 'role': 'computer language', 'potentiality': 1000, 'sex': 'male'}

        (3)删除元素

        字典中元素的删除,可以使用 del()方法;或者 clear()删除所有键值对;pop()删除指定键值对,并返回对应的“值对象”。

dict1 = {'name': 'Python', 'age': 18, 'role': 'computer language'}del(dict1['name'])print(dict1) # {'age': 18, 'role': 'computer language'}a = dict1.pop('role')print(a) # computer languagedict1.clear()print(dict1) # {}

        popitem()方法用于随机删除和返回该键值对。字典是“无序可变序列”,因此没有第一个元素、最后一个元素的概念;popitem 弹出随机的项,因为字典并没有"最后的元素"或者其他有关顺序的概念。若想一个接一个地移除并处理项,这个方法就非常有效(因为不用首先获取键的列表)

dict1 = {'name': 'Python', 'age': 18, 'role': 'computer language'}print(dict1.popitem()) # ('role', 'computer language')print(dict1.popitem()) # ('age', 18)print(dict1.popitem()) # ('name', 'Python')

5、items方法、keys方法和values方法

        items 方法用于返回字典中所有的 key-value 对。获得的每一个 key-value 对用一个元组表示。items 方法返回的值是一个被称为字典视图的特殊类型,可以被用于迭代(如使用在for 循环中)。keys 方法用于返回字典中所有的 key,返回值类型与 items 方法类似,可以用于迭代。values 方法用于以迭代器形式返回字典中值的列表

dict1 = {'name': 'Python', 'age': 18, 'role': 'computer language'}print(dict1.items()) # dict_items([('name', 'Python'), ('age', 18), ('role', 'computer language')])print(dict1.keys()) # dict_keys(['name', 'age', 'role'])print(dict1.values()) # dict_values(['Python', 18, 'computer language'])# 使用keys来遍历字典获取value值for key in dict1.keys():print(key, ':', dict1.get(key))# name : Python# age : 18# role : computer language

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

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

相关文章

视频编码器行业研究:预计到2028年全球市场规模将达到180.92亿元

随着AI技术向视频产业生产、传输和消费环节的渗透,AI技术在视频分析中的应用逐渐常态化,智能视频衍生而出。智能视频的多元应用重塑了视频产业链,视频处理技术根据不同的视频应用多维迸发,视频编解码技术与AI技术的结合具有共性和…

【开源】基于JAVA语言的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

find命令 – 根据路径和条件搜索指定文件

linux-find find命令通常进行的是从根目录(/)开始的全盘搜索,有别于whereis、which、locate等有条件或部分文件的搜索。对于服务器负载较高的情况,建议不要在高峰时期使用find命令的模糊搜索,这会相对消耗较多的系统资…

【代码随想录-数组】有序数组的平方

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

Vue学习笔记13-- Vue3之计算属性与监视

7、计算属性与监视 1.computed函数 与Vue2.x中computed配置功能一致 写法 import {computed} from vuesetup(){...//计算属性——简写let fullName computed(()>{return person.firstName - person.lastName})//计算属性——完整let fullName computed({get(){return …

【STM32】STM32学习笔记-BKP备份寄存器和RTC实时时钟(42)

00. 目录 文章目录 00. 目录01. BKP简介02. BKP特性03. BKP基本结构04. RTC简介05. RTC主要特性06. RTC框图07. RTC基本结构08. 硬件电路09. RTC操作注意事项10. 附录 01. BKP简介 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备…

JPDA框架和JDWP协议

前言 在逆向开发中,一般都需要对目标App进行代码注入。主流的代码注入工具是Frida,这个工具能稳定高效实现java代码hook和native代码hook,不过缺点是需要使用Root设备,而且用js开发,入门门槛较高。最近发现一种非Root环境下对Debug App进行代码注入的方案,原理是利用Jav…

【Java语言基础④】Java编程基础——选择结构语句,循环结构语句

选择结构语句 1.if子句 if条件语句 if语句是指如果满足某种条件,就进行某种处理。例如,小明妈妈跟小明说“如果你考试得了100分,星期天就带你去游乐场玩”。 if语句的具体语法如下: if (判断条件) { 执行语句}if…else语句 if…e…

都 2024 年了,该如何搭建新的 React 项目?

在前端技术日新月异的今天,React 社区已经不再将 create-react-app 作为创建新项目的首选工具,而是推荐使用社区中流行的由 React 驱动的框架来创建新项目。本文就来探讨在 2024 年创建 React 项目的方式及其优缺点! Create React App 有什么…

vivado 定义和配置I/O端口、

定义和配置I/O端口 您可以使用Vivado IDE导入、创建和配置I/O端口,如中所述以下部分。 导入I/O端口 根据项目类型,可以使用以下方法导入I/O端口: •I/O规划项目:您可以将XDC和CSV文件导入空的I/O规划项目当您使用文件导入功能…

Apache Shiro 安全框架

前言 Apache Shiro 是一个强大且容易使用的Java安全矿建,执行身份验证,授权,密码和会话管理。使用Shiro的易于理解的API您可以快速轻松的获得任何应用程序直到大的项目。 一丶什么是Shiro 1.Shiro是什么 Apache Shiro是一个强大且易于使用…

mysql高可用设计,主库挂了怎么办

实际上高可用就是系统能提供的一种无故障服务能力,就是避免宕机出现不能服务的场景。 首先来说对于无状态服务的高可用设计是比较简单的,发现有不能用的就直接停了换别的服务器就行,比如Nginx。这里说一下无状态服务就是不需要记录你的状态、…

编程笔记 html5cssjs 058 css计数器

编程笔记 html5&css&js 058 css计数器 一、带计数器的自动编号二、嵌套计数器三、CSS 计数器属性练习小结 CSS 计数器是由 CSS 保持的“变量”,其值可以通过 CSS 规则递增(以跟踪其使用次数)。计数器使您可以根据内容在文档中的位置来…

防御保护---NAT实验

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一. 练习 PC4配置 FW2配置 sys int g0/0/0 ip add 192.168.100.3 24 service-manage all permit sys int l0 ip add 1.1.1.1 24 int g0/0/0 ip add 12.0.0.1 24 int g0/0/2 ip add 21.0.0.1 …

zuul网关

zuul网关 zuul自定义过滤器hystrix和ribbon时间RibbonAutoConfiguration自动配置FeignAutoConfiguration自动配置RibbonEurekaAutoConfigurationSendErrorFilter过滤器EnableZuulServerHasFeatures EnableZuulProxy zuul自定义过滤器 继承ZuulFilter类,实现其方法f…

Linux/Uinx 系统编程:进程管理(1)

Linux/Uinx 系统编程:进程管理(1) 文章目录 Linux/Uinx 系统编程:进程管理(1)什么是进程进程来源INIT 和 守护进程登录进程sh进程进程的执行模式进程管理的系统调用关于syscall中参数b,c&#x…

谷歌出品!读懂 QUIC 协议:更快、更高效的通信协议

QUIC结构 QUIC协议模型如下图所示,其放弃了TCP∕IP网络中使用五元组(源IP,源端口,目的IP,目的端口,协议标识符)来唯一标识一条连接的方式,而使用一个全局唯一的随机生成的ID(即Connection ID) 来标识一条连接。 由低向上分层讨论QUIC协议: •UDP层:在U…

MongoDB莫名崩溃的问题定位与解决纪实

MongoDB莫名崩溃的问题定位与解决纪实 国庆之前发布的软件版本一直运行正常,国庆之后,测试同事跑自动化测试脚本,发现该软件频繁异常,通过查看log发现,该软件使用的MongoDB崩溃了。 该软件是个Windows的桌面软件&…

【QT+QGIS跨平台编译】之十二:【libpng+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文件目录 一、libpng介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libpng介绍 PNG(Portable Network Graphics,便携式网络图形),是一种采用无损压缩算法的位图格式,支持索引、灰度、RGB三种颜色方案以及Alpha通道等特性。 PNG使用从LZ77派生的无损数据压缩算…

Java类加载器

什么是类加载器? 1.1类加载器 作用 负责将.class文件(存储的物理文件)加载在到内存中 需要有个人把我们写的java文件编译后的字节码文件搬运到虚拟机上 1.2类加载的完整过程 1.2类加载的完整过程 类加载时机 简单理解:字节码文件什么时候…