Python字典-dict “ “ ---记一次查缺补漏“ “

文章目录

  • 0x0 前言
  • 0x1 字典 (Dictionary)
    • 0x01 访问字典里的值
    • 0x02 修改字典
    • 0x03 删除字典元素
    • 0x04 判断字典是否包含指定key,用in或not in 运算符
  • 0x2 字典键的特性
    • 0x01
    • 0x2
  • 0x3 字典内置函数&方法
  • 0x4 使用格式化字符串

0x0 前言

python没有系统学过,走一步学一点吧,这次查缺补漏的点是dict;
文献参考:

菜鸟教程
ChatGPT
https://c.biancheng.net/view/2212.html
维基百科

0x1 字典 (Dictionary)

字典是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据。
字典中相当于存放了俩组数据,其中一组是关键数据被称为key,另外一组可以用key来访问,被称为value,形象的看 key和value的关系如下图:
在这里插入图片描述
source:https://c.biancheng.net/view/2212.html

字典的每个键值 key:value 对 用冒号 : 分割 ,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中,格式如下:

d = {key1 : value1, key2 : value2 }

注意 : dict作为 Python 的关键字和内置函数,变量名不建议命名为 dict
键一般是唯一的,如果重复最后一个键值对会替换前面的,值不需要唯一。

>>> tinydict = {'a': 1, 'b': 2, 'b': '3'}
>>> tinydict['b']
'3'
>>> tinydict
{'a': 1, 'b': '3'}

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:

tinydict = {'qwer':'1234', 'asdf':'5678', 'zxcv' : '9012'}

也可如此创建字典:

tinydict1 = { 'abc': 456 }
tinydict2 = { 'abc': 123, 98.6: 37 }

字典的基本用法:

  • 通过key访问value
  • 通过key添加key-value对
  • 通过key删除key-value对
  • 通过key修改key-value对
  • 通过key判断制定key-value对是否存在
  • 通过key访问value使用的也是方括号语法

0x01 访问字典里的值

把相应的键放入方括弧中,如下实例:

# python2 运行不需要括号
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

print "tinydict['Name']: ", tinydict['Name']
print "tinydict['Age']: ", tinydict['Age']

# python3 运行需要括号
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

print("tinydict['Name']: ", tinydict['Name'])
print("tinydict['Age']: ", tinydict['Age'])

输出结果:

tinydict['Name']:  Zara
tinydict['Age']:  7

如果用字典里没有的键访问数据,会输出错误如下:
实例:

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

print("tinydict['Alice']: ", tinydict['Alice'])

以上实例输出结果:
在这里插入图片描述

0x02 修改字典

向字典中添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

# 基于 python3 实例

tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

tinydict['Age'] = 8  # 更新
tinydict['School'] = "RUNOOB"  # 添加

print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])

以上实例输出结果:

tinydict['Age']:  8
tinydict['School']:  RUNOOB

0x03 删除字典元素

能删单一的元素也可以清空字典,清空只需要一项操作。
显示删除一个字典用del命令,如下实例:

# 基于 python 3 实现
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

del tinydict['Name']  # 删除键是'Name'的条目
tinydict.clear()  # 清空字典所有条目
del tinydict  # 删除字典

print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])

在这里插入图片描述
输出结果如上,因为使用del后字典不再存在;

0x04 判断字典是否包含指定key,用in或not in 运算符

需要指出的是,对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的。例如如下代码:

#!/usr/bin/python
# 判断cars是否包含名为'AUDI'的key
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}

print('AUDI' in cars)  # True
# 判断cars是否包含名为'PORSCHE'的key
print('PORSCHE' in cars)  # False
print('LAMBORGHINI' not in cars)  # True

以上实例输出结果:

True
False
True

0x2 字典键的特性

字典值可以没有限制多地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不可以。
有俩个重要的点需要记住:

0x01

不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

#!/usr/bin/python
# 基于 python 3 实现

tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': 'Manni'}

print("tinydict['Name']: ", tinydict['Name'])

以上实例输出结果:

tinydict['Name']:  Manni

0x2

键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:

#!/usr/bin/python
# 基于 python3
tinydict = {['Name']: 'Zara', 'Age': 7}

print("tinydict['Name']: ", tinydict['Name'])

以上实例输出结果:
在这里插入图片描述

0x3 字典内置函数&方法

Python字典包含如下内置函数:

  • cmp(dict1,dict2) 比较俩个字典元素
    如果俩个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1。
    **注意:**cmp函数在python3已经移除,如果要实现比较效果可以使用
if dict1 == dict2:
    print("dict1 和 dict2 相等")
else:
    print("dict1 和 dict2 不相等")
  • len()函数
    它可以用来获取字典中键-值对的数量,即字典的长度。
    示例:
my_dict = {'a': 1, 'b': 2, 'c': 3}
length = len(my_dict)
print(length)  # 输出:3
  • str()函数
    可以用于将字典转换为字符串,通常用于调试或打印字典的内容。
    实例:
my_dict = {'a': 1, 'b': 2, 'c': 3}
dict_str = str(my_dict)
print(dict_str)  # 输出:{'a': 1, 'b': 2, 'c': 3}
  • type()函数
    它可以用来检查对象的类型,包括字典。
    示例:
my_dict = {'a': 1, 'b': 2, 'c': 3}
dict_type = type(my_dict)
print(dict_type)  # 输出:<class 'dict'>
  • clear()方法,用于情况字典中所有的key-value对,使用clear()后字典会变成一个空字典。
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
print(cars) # {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
# 清空cars所有key-value对
cars.clear()
print(cars) # {}
  • get()方法
    根据 key 来获取 value,,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。
cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
# 获取'BMW'对应的value
print(cars.get('BMW')) # 8.5
print(cars.get('PORSCHE')) # None
print(cars['PORSCHE']) # KeyError

运行结果如下:
在这里插入图片描述

  • update()方法
    可使用一个字典所包含的 key-value 对来更新己有的字典。
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}

# 使用update()方法将dict2的键值对合并到dict1中
dict1.update(dict2)

print(dict1)  # 输出:{'a': 1, 'b': 3, 'c': 4}
  • items()、keys()、values()
  • pop()方法
  • popitem()方法
  • setdefault()方法
  • fromkeys()方法

0x4 使用格式化字符串

字符串插值或字符串格式化是一种常见的技术,用于将变量的值插入到字符串中,以便创建格式化的输出。可以使用百分号(%)操作符来执行字符串插值,也可以使用f-strings(在Python 3.6及更高版本中可用)或str.format()方法来格式化字符串。

使用百分号(%)的操作:

temp = '博主的名字是:%(name)s, 截止目前粉丝数是:%(price)010.2f, 学习方向是:%(publish)s'
book = {'name': 'Sciurdae', 'price': 294, 'publish': 'Reverse'}
# 使用字典为字符串模板中的key传入值
print(temp % book)

book = {'name': 'Sciurdae', 'price': 1000000, 'publish': 'Crypto'}
# 使用字典为字符串模板中的key传入值
print(temp % book)

运行结果嘿嘿:
在这里插入图片描述

使用’format’的操作

data = {'Name': 'Sciurdae', 'free': 294}
formatted_string = "Name: {Name}, fensi: {free}".format(**data)
print(formatted_string)

这将创建一个格式化的字符串,将data字典中的键值插入到字符串中
运行结果:

Name: Sciurdae, fensi: 294

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin(九) 集合以及集合API

目录 一&#xff1a;集合的创建 List 集合的创建&#xff1a; 集合的遍历&#xff1a; Set Map 创建 遍历 二&#xff1a;集合的函数式API maxBy函数 map函数 filter函数 any和all函数 一&#xff1a;集合的创建 List 集合的创建&#xff1a; ① listOf() 不…

Visual Studio Code (VS Code)安装教程

Visual Studio Code&#xff08;简称“VS Code”&#xff09;。 1.下载安装包 VS Code的官网&#xff1a; Visual Studio Code - Code Editing. Redefined 首先提及一下&#xff0c;vscode是不需要破解操作的&#xff1b; 第一步&#xff0c;看好版本&#xff0c;由于我的系…

网络协议--BOOTP:引导程序协议

16.1 引言 在第5章我们介绍了一个无盘系统&#xff0c;它在不知道自身IP地址的情况下&#xff0c;在进行系统引导时能够通过RARP来获取它的IP地址。然而使用RARP有两个问题&#xff1a;&#xff08;1&#xff09;IP地址是返回的唯一结果&#xff1b;&#xff08;2&#xff09;…

031-从零搭建微服务-监控中心(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;mingyue: &#x1f389; 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

「实用技巧」后端如何使用 Eolink Apikit 快速调试接口?

程序员最讨厌的两件事&#xff1a; 写文档 别人不写文档 写文档、维护文档比较麻烦&#xff0c;而且费时&#xff0c;还会经常出现 API 更新了&#xff0c;但文档还是旧的&#xff0c;各种同步不一致的情况&#xff0c;从而耽搁彼此的时间&#xff0c;大多数开发人员不愿意写…

学习笔记-MongoDB(命令增删改查,聚合,权限管理,索引,java使用)

基础概念 1 什么是mogodb&#xff1f; MongoDB 是一个基于分布式文件/文档存储的数据库&#xff0c;由 C 编写&#xff0c;可以为 Web 应用提供可扩展、高性能、易部署的数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库中功…

并发编程- 线程池ForkJoinPool工作原理分析(实践)

数据结构加油站&#xff1a; Comparison Sorting Visualization 并发设计模式 单线程归并排序 public class MergeSort {private final int[] arrayToSort; //要排序的数组private final int threshold; //拆分的阈值&#xff0c;低于此阈值就不再进行拆分public MergeSort…

haproxy 负载均衡

haproxy负载均衡 haproxy&#xff1a;基于C语言开发的开源软件 支持高性能的tcp和http负载均衡器&#xff0c;工作中用的版本1.5.9 haproxy功能&#xff1a;主要用于高并发的web站点&#xff0c;工作原理和nginx、lvs都一样 haproxy缺点: 单节点部署&#xff0c;单实例运行。代…

【postman】postman的使用与postman汉化

postman的使用 Postman 是一个接口测试工具软件&#xff0c;可以帮助开发人员管理测试接口。 官网&#xff1a;Postman API Platform psotman环境 首先import的或则new 创建一个环境 Variable 变量名 Type 类型 Initial value 初始值 C…

prometheus监控kafka

一、前言 关于对kafka的监控&#xff0c;要求高的话可以使用kafka-exorter和jmx-exporter一起收集监控数据&#xff0c;要求不高的情况下可以使用kafka-exporter收集监控数据即可 二、部署 kafka-exporter 部署kafka-exporter&#xff0c;我是在k8s集群中部署的 编辑yaml文件…

D71X-16Q手柄蝶阀型号解析

D71X-16Q型号字母含义解析 D71X-16Q是德特森阀门常用的手柄蝶阀型号字母分别代表的意思是: D——代表阀门类型《蝶阀》 7——代表连接方式《对夹》 1——代表结构形式《中线》 X——代表阀座材质《橡胶》 -代表分隔键 16——代表公称压力《1.6MPA》 Q——代表阀体材料《…

【测试转型】人工智能的当下,测试团队如何敏捷转型 —— 无测试组织

文章目录 〇、引子一、什么是“无测试组织”&#xff1f;二、无测试组织适用于哪些场景&#xff1f;三、无测试组织还有哪些优势或特点&#xff1f;新书推荐 —— 《**无测试组织&#xff1a;测试团队的敏捷转型** 》 〇、引子 初次看到“无测试组织”的朋友可能会觉得有标题党…

Apache ActiveMQ RCE漏洞复现(CNVD-2023-69477)

0x01 产品简介 ActiveMQ是一个开源的消息代理和集成模式服务器&#xff0c;它支持Java消息服务(JMS) API。它是Apache Software Foundation下的一个项目&#xff0c;用于实现消息中间件&#xff0c;帮助不同的应用程序或系统之间进行通信。 0x02 漏洞概述 Apache ActiveMQ 中存…

Spring Boot集成Swagger接口分类与各元素排序问题

在上一篇中我们完成使用JSR-303校验&#xff0c;以及利用Swagger2得到相关接口文档&#xff0c;这节&#xff0c;我们在原先的基础之上&#xff0c;完成Swagger中关于对各个元素之间控制前后顺序的具体配置方法。 Swagger的接口的分组 首先我们需要对Swagger中的接口也就是以…

【LeetCode】102. 二叉树的层序遍历

题目链接 文章目录 Python3方法一&#xff1a; 广度优先搜索 (BFS) ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法二&#xff1a; 深度优先搜索 (DFS) ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯ C方法一&#xff1a; 广度优先搜索 (BFS) ⟮ O ( n ) ⟯ \lgroup O(n…

Android stdio 无法新建或打开AIDL文件(解决方法)

1.在gradle文件中添加如下代码 2.AIDL要求minsdk>16,并且要使aidl true&#xff08;在Gradle中添加&#xff09; android{ buildFeatures { aidl true } } 我们看见&#xff0c;可以创建AIDL文件了 3.接着&#xff0c;我们看到文件出现如下提示 4.在gradle…

hypercube背景设置为白色,绘制高光谱3D立方体

import scipy pip install wxpython PyOpenGL和Spectral需要本地安装 可参考链接https://blog.csdn.net/qq_43204333/article/details/119837870 参考&#xff1a;https://blog.csdn.net/Tiandailan/article/details/132719745?spm1001.2014.3001.5506Mouse Functions:left-cl…

系列六、FactoryBean vs ApplicationContext

一、FactoryBean vs ApplicationContext 1.1、概述 BeanFactory是一个工厂类&#xff0c;负责生产和管理bean&#xff0c;在Spring中BeanFactory是IOC容器的核心接口&#xff0c;它的主要职责就是生产bean及建立各个bean之间的依赖。applicationContext是BeanFactory的一个子接…

亿图导出word和PDF中清晰度保留方法

步骤一 在亿图软件中画一个元件大小搭配合理的图。注意字体大小的安排&#xff0c;尤其是角标的大小要合适&#xff0c;示范如下 选中所有元器件&#xff0c;右键使用组合功能将电路图组合为一个整体 步骤二&#xff1a; 将亿图软件中的图保存为SVG格式。示范如下 在导出到…

数字音频工作站软件 Ableton Live 11 mac中文软件特点与功能

Ableton Live 11 mac是一款数字音频工作站软件&#xff0c;用于音乐制作、录音、混音和现场演出。它由Ableton公司开发&#xff0c;是一款极其流行的音乐制作软件之一。 Ableton Live 11 mac软件特点和功能 Comping功能&#xff1a;Live 11增加了Comping功能&#xff0c;允许用…