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

news2024/10/6 14:35:57

文章目录

  • 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

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

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

相关文章

jmeter界面压测过程卡死解决思路

1、排查压测机的资源是否充足&#xff1b; 2、检查jmeter压测脚本&#xff0c;除聚合报告的所有组件关闭&#xff1b; 我在压测过程中出现频繁卡死&#xff0c;就是查看结果数和断言结果信息量过多导致&#xff1a; 3、直接用非gui界面形式&#xff0c;也就是脚本形式压测。

postgis ST_CoverageInvalidEdges使用说明

官方文档 函数说明 概要 geometry ST_CoverageInvalidEdges(geometry winset geom, float8 tolerance 0); 描述 一个窗口函数&#xff0c;用于检查窗口分区中的多边形是否形成有效的多边形覆盖范围。 它返回线性指示器&#xff0c;显示每个多边形中无效边&#xff08;如果…

判断对象a的值是否小于对象boperator.lt()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断对象a的值 是否小于对象b operator.lt() 选择题 下列代码执行输出的结果是? import operator print("【执行】print(operator.lt(3, 5))") print(operator.lt(3, 5)) print(&qu…

傅里叶级数系数的完整详细算法

傅里叶级数系数的完整详细算法 一、三角函数相关公式和定积分 在分析傅里叶级数之前&#xff0c;一定要先熟悉三角函数的相关公式&#xff0c;以及三角函数的积分。 1、两角和公式&#xff1a; sin(αβ) sin(α) * cos(β) cos(α) * sin(β) sin(α-β) sin(α) * co…

域名系统 DNS

DNS 概述 域名系统 DNS(Domain Name System)是因特网使用的命名系统&#xff0c;用来把便于人们使用的机器名字转换成为 IP 地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢&#xff1f;这是因为在这种因特网的命名系统中使用了许多的“域(domain)”&#x…

【数字IC验证半科班历程:芯片概括_2023.10.20】

前言 选择行业需深入了解&#xff1a;行业的前景&#xff0c;是否适合……在知乎浏览n多帖子&#xff0c;千人千面&#xff0c;褒贬不一&#xff0c;只能黑人问号脸。且帖子虽说明学习路线&#xff0c;但甚至面对缩写名词&#xff0c;百度后仍是一知半解&#xff0c;不知确切内…

el-form组件如何清除校验提示(前端技能提升)

错误效果 错误描述 在切换radio切换的时候校验提示提示出来了&#xff0c;本身不应该出来但是如何取消呢&#xff1f;因为在切换时候我们置空但是并没有取消校验&#xff0c;所以从通过到拒绝置空时候肯定会出现提示语&#xff0c;那么我们把提示校验的方法去掉就行了。 错误代…

启动两个线程,用另一个线程以通知的终止另一个线程

要求&#xff1a; 在main方法中启动两个线程第一个线程循环随机打印100以内的整数直到第二个线程从键盘读取了”Q“命令 实现代码如下&#xff1a; public class Homework01 {public static void main(String[] args) {THk tHk new THk();tHk.start();Thk2 thk2 new Thk2(…

【Linux】操作系统以及虚拟机的安装与配置

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.操作系统的介绍 二.VMWare虚拟机的安装…

【算法题】割后面积最大的蛋糕

题目&#xff1a; 矩形蛋糕的高度为 h 且宽度为 w&#xff0c;给你两个整数数组 horizontalCuts 和 verticalCuts&#xff0c;其中&#xff1a; horizontalCuts[i] 是从矩形蛋糕顶部到第 i 个水平切口的距离 verticalCuts[j] 是从矩形蛋糕的左侧到第 j 个竖直切口的距离 请你…

宏定义实现offsetof

在C语言中&#xff0c;有这样一个特殊的宏&#xff0c;叫offsetof&#xff0c;它的功能是啥呢&#xff1f; 我们来看看它的介绍 它的功能是&#xff1a;返回一个结构体的成员的大小&#xff08;相较于起始地址的偏移量&#xff09; 引用代码&#xff1a;http://t.csdnimg.cn…

CS224W1.1——图机器学习介绍

文章目录 1. 介绍2. 主要问题3. 深度学习如何应用在图结构中4. 课程大纲 学习一下斯坦福CS224W的图机器学习&#xff08;2021年&#xff09;&#xff0c;并做一下学习笔记&#xff0c;主要是研究方向与图神经网络相关。这次是第一次笔记&#xff0c;图片很多都是从斯坦福的PPT里…

【java学习—九】抽象类和抽象方法(3)

文章目录 1. 相关概念2. 如何定义抽象方法和抽象类3. 抽象类的作用4. 练习题4.1. 问题14.2. 问题2 1. 相关概念 抽象类&#xff1a;随着继承层次中一个个新子类的定义&#xff0c;类变得越来越具体&#xff0c;而父类则更一般&#xff0c;更通用。类的设计应该保证父类和子类能…

如何在群晖Synology+Office实现多人编辑一个文件?

使用群晖Synology Office提升生产力&#xff1a;多人同时编辑一个文件 文章目录 使用群晖Synology Office提升生产力&#xff1a;多人同时编辑一个文件本教程解决的问题是&#xff1a;1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制…

潮玩宇宙:大逃杀模式的利与弊

在当今的游戏市场中&#xff0c;潮玩宇宙的概念越来越受到关注。这个以潮流玩具为主题的宇宙&#xff0c;不仅包含了众多类型的玩具和收藏品&#xff0c;还融合了各种独特的文化形式和娱乐内容。其中&#xff0c;大逃杀模式作为一种流行的游戏模式&#xff0c;在潮玩宇宙中占据…

倒计时 1 天!神策 2023 数据驱动大会「参会指南」,请收藏

「新旅程、新经营&#xff0c;决胜数字化」&#xff0c;神策 2023 数据驱动大会明日召开&#xff01;大会聚焦客户经营与客户旅程主题&#xff0c;特邀数十位海内外专家、知名企业代表、资深投资人&#xff0c;分享行业观点与趋势洞察&#xff0c;共同推动中国企业数字化客户经…

Mysql8.1.0 windows 绿色版安装

Mysql8.1.0 windows 绿色版安装 目录 Mysql8.1.0 windows 绿色版安装1、下载mysql8.1.0_windows&#xff08;mysql-8.1.0-winx64.zip&#xff09;2、解压到安装目录3、添加环境变量4、新建mysql配置文件5、安装mysql服务6、初始化数据文件7、启动mysql服务8、进入mysql管理模式…

深度学习:张量 介绍

张量[1]是向量和矩阵到 n 维的推广。了解它们如何相互作用是机器学习的基础。 简介 虽然张量看起来是复杂的对象&#xff0c;但它们可以理解为向量和矩阵的集合。理解向量和矩阵对于理解张量至关重要。 向量是元素的一维列表&#xff1a; 矩阵是向量的二维列表&#xff1a; 下标…

JAVA面试题简单整理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、重载和重写的区别一、&和&&的区别一、get和post请求的区别 delete、put一、cookie和session的区别一、Autowired和Resource区别一、”和equals…

wait 和 notify 这个为什么要在 synchronized 代码块中?

wait 和 notify wait 和 notify 用来实现多线程之间的协调&#xff0c;wait 表示让线程进入到阻塞状态&#xff0c;notify 表示让阻塞的线程唤醒。 wait 和 notify 必然是成对出现的&#xff0c;如果一个线程被 wait()方法阻塞&#xff0c;那么必然需要另外一个线程通过 noti…