08_Python数据类型_字典

在这里插入图片描述

Python的基础数据类型

  • 数值类型:整数、浮点数、复数、布尔
  • 字符串
  • 容器类型:列表、元祖、字典、集合

字典

  • 字典(Dictionary)是一种可变容器模型,它可以存储任意类型对象,其中每个对象都存储为一个键值对。
  • 字典是Python中唯一内建的映射类型,通常用于存储具有映射关系的数据。
  • 一个元素分为两部分:key:value,键值对。

定义字典

字典是由大括号 {} 包围的键值对集合,每个键值对由冒号 : 分隔,不同的键值对之间用逗号 , 分隔。

# 创建一个空字典
empty_dict = {}
print(empty_dict)
# 创建一个包含几个键值对的字典
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
print(my_dict)

字典的特性

  • 字典中的键必须是唯一的,而值不必是唯一的。
  • 字典中的键必须是不可变的数据类型,如字符串、数字或元组,但不能是列表或字典。
  • 字典是无序的,尽管在Python 3.7+中,字典会保持插入顺序。

访问字典元素

可以通过键来访问字典中的值。

# 访问字典中的值
value = my_dict['key1']  # 结果是 'value1'
print(value)

如果尝试访问一个不存在的键,将会抛出 KeyError。

# value4 = my_dict['key4']  # 结果是 KeyError

字典操作

字典支持多种操作,如下所示:

  • 添加键值对:直接赋值给新的键。
  • 修改键值对:直接赋值给已存在的键。
  • 删除键值对:使用 del 语句或 pop() 方法。
print(my_dict)
# 添加键值对
my_dict['new_key'] = 'new_value'
print(my_dict)
my_dict.setdefault('new_key2', 'new_value2')
print(my_dict)
# 修改键值对
my_dict['key1'] = 'updated_value'
print(my_dict)
# 删除键值对
del my_dict['key2']
print(my_dict)
# 或者, 根据key删除键值对。
removed_value = my_dict.pop('key3')
print(my_dict)

字典方法

字典提供了许多有用的方法,如:

  • keys():返回字典中的所有键。
  • values():返回字典中的所有值。
  • items():返回字典中的所有键值对。
  • get():返回指定键的值,如果键不存在,则返回默认值(默认为 None)。没有找到不会报错,可以设置查找不到的返回默认值。
  • update():使用另一个字典的键值对更新当前字典。
# 获取字典中的所有键
keys = my_dict.keys()
print(keys)
# 获取字典中的所有值
values = my_dict.values()
print(values)
# 获取字典中的所有键值对,返回元组的形式。
items = my_dict.items()
print(items)
# 安全地获取字典中的值
value = my_dict.get('key1', 'default_value')
print(value)
# 更新字典
my_dict.update({'key4': 'value4', 'key5': 'value5'})
print(my_dict)

遍历字典

  • 默认遍历key
  • 可以遍历key
  • 可以遍历value
  • 可以遍历键值对
# 默认遍历key
for i in my_dict:print(i)# 遍历key
for k in my_dict.keys():print(k)# 遍历value
for v in my_dict.values():print(v)# 遍历键值对
for k, v in my_dict.items():print(k, v)

字典推导式

与列表推导式类似,字典推导式可以用来生成字典。

# 创建一个字典,键为0-9每个数字,值为每个数字的平方
squared_dict = {x: x**2 for x in range(10)}
print(squared_dict)
# 字典推导式
new_dict = {k:v for k,v in my_dict.items()}
print(new_dict)
# 带条件的字典推导式
my_dict6 = {'张三':95, '李四':60, '王五':85, '赵六':30}
new_dict = {k:v for k,v in my_dict6.items() if v >= 85}
print(new_dict)

字典的复制

字典的复制可以通过直接赋值、浅拷贝或深拷贝来实现。

  • 直接赋值:新变量引用同一个字典。
  • 浅拷贝:创建一个新字典,但不复制内部对象的引用。
  • 深拷贝:创建一个新字典,并递归地复制内部对象。
import copy# 直接赋值
dict1 = {'a': 1, 'b': 2,'c':{'a': 1}}
dict2 = dict1  # dict2 是 dict1 的引用
print("dict1:",dict1)
print("dict2:",dict2)
print("id(dict1):",id(dict1))
print("id(dict1['c']):",id(dict1['c']))
print("id(dict2):",id(dict2))
# 浅拷贝
dict3 = copy.copy(dict1)
print("dict3:",dict3)
print("id(dict3):",id(dict3))
print("id(dict3['c']):",id(dict3['c']))
# 深拷贝
dict4 = copy.deepcopy(dict1)
print("dict4:",dict4)
print("id(dict4):",id(dict4))
print("id(dict4['c']):",id(dict4['c']))

字典是Python中非常强大的数据结构,它提供了灵活的数据存储和访问方式,适用于各种需要键值对映射的场景。

附件

本文对应的jupyter notebook源码链接,欢迎下载练习:https://download.csdn.net/download/fx_yzjy101/89760981

如有问题请留言。

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

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

相关文章

存储数据的树形结构

目录 1、二叉查找树 2、平衡二叉树AVL Tree 3 、平衡多叉树B-Tree 4、BTree树 5 、红黑树 红黑树的应用 6.平衡树的旋转 mysql 索引数据结构: Btree 索引是B树在数据库中的一种实现,最为常见的。B树 中的B代表平衡,而不是二叉 1、二…

带你如何使用CICD持续集成与持续交付

目录 一、CICD是什么 1.1 持续集成(Continuous Integration) 1.2 持续部署(Continuous Deployment) 1.3 持续交付(Continuous Delivery) 二、git工具使用 2.1 git简介 2.2 git的工作流程 2.3 部署g…

如何用 Scrapy 爬取网站数据并在 Easysearch 中进行存储检索分析

做过数据分析和爬虫程序的小伙伴想必对 Scrapy 这个爬虫框架已经很熟悉了。今天给大家介绍下,如何基于 Scrapy 快速编写一个爬虫程序并利用 Easysearch 储存、检索、分析爬取的数据。我们以极限科技的官网 Blog 为数据源,做下实操演示。 安装 scrapy 使…

3. Python计算水仙花数

Python计算水仙花数 一、什么是水仙花数? 百度答案 二、怎样使用Python计算水仙花数? 这里需要for循环,if判断,需要range()函数,需要知道怎么求个位数,十位数,百位数… 1. For循环 语句结…

CTFHub技能树-SQL注入-整数型注入

一、手动注入 思路:注入点->库->表->列->数据 首先使用order by探测有几列 http://challenge-215beae2f0b99b12.sandbox.ctfhub.com:10800/?id1 order by 2 我们发现order by 2 的时候有回显,到了order by 3 的时候就没有回显了&#xf…

k8s的环境配置

一、前期系统环境准备 准备3台主机:硬盘50G cpu2个 内存2G 1、3台主机同时配置 1)关闭防火墙与selinux、NetworkManager [rootk8s-master ~]# systemctl stop firewalld[rootk8s-master ~]# systemctl disable firewalldRemoved symlink /etc/systemd/…

CSS---序号使用css设置,counter-reset、counter-increment、content配合实现备注文案的序号展示

直接上代码&#xff0c;全代码copy即可使用! <template><div class"reminder"><span class"Bold_12_body" style"line-height: 8vw">温馨提示&#xff1a;</span><br /><div class"rule-container"…

【Hot100】LeetCode—84. 柱状图中最大的矩形

目录 1- 思路题目识别单调栈 2- 实现⭐84. 柱状图中最大的矩形——题解思路 3- ACM 实现 原题链接&#xff1a;84. 柱状图中最大的矩形 1- 思路 题目识别 识别1 &#xff1a;给定一个数组 heights &#xff0c;求解柱状图的最大面积 单调栈 使用 Stack 来实现&#xff0c;遍…

go语言中的数组指针和指针数组的区别详解

1.介绍 大家知道C语言之所以强大&#xff0c;就是因为c语言支持指针&#xff0c;而且权限特别大&#xff0c;c语言可以对计算机中任何内存的指针进行操作&#xff0c;这样自然而然也会带来一些不安全的因素&#xff0c;所以在golang中&#xff0c;「取消了对指针的一些偏移&…

【C语言】分支和循环专题应用

分支和循环专题应用 1、随机数生成1.1rand1.2 srand函数介绍1.3 time函数介绍1.4 设置随机数的范围 2、猜数字游戏的代码及实现 通过了分支和循环的介绍学习之后&#xff0c;我们可以运用分支和循环语句写出一些有趣的代码了&#xff0c;让我们来一起探索吧&#xff01; 写一个…

node.js 中的进程和线程工作原理

本文所有的代码均基于 node.js 14 LTS 版本分析 概念 进程是对正在运行中的程序的一个抽象&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;操作系统的其他所有内容都是围绕着进程展开的 线程是操作系统能够进行运算调度的最小单位&#xff0c;其是进程中的一个执…

远程桌面内网穿透是什么?有什么作用?

远程桌面内网穿透指的是通过特定技术手段&#xff0c;将处于内网中的电脑或服务器&#xff0c;通过外部网络&#xff08;互联网&#xff09;进行访问。内网穿透的主要作用是解决在内网环境下&#xff0c;远程设备与外部互联网之间的连接问题&#xff0c;允许用户从外部访问内网…

.Net Gacutil工具(全局程序集缓存工具)使用教程

GAC介绍&#xff1a; GAC&#xff08;Global Assembly Cache&#xff09;全局程序集缓存&#xff0c;是用于存放.Net应用程序共享的程序集。 像平常我们在Visual Studio中引用系统程序集时&#xff0c;这些程序集便来自于GAC。 GAC默认位置为&#xff1a;%windir%\Microsoft…

【ArcGIS】栅格计算器原理及案例介绍

ArcGIS&#xff1a;栅格计算器原理及案例介绍 栅格计算器&#xff08;Raster Calculator&#xff09;原理介绍案例案例1&#xff1a;计算栅格数据平均值 参考 栅格计算器&#xff08;Raster Calculator&#xff09;原理介绍 描述&#xff1a;在类似计算器的界面中&#xff0c;…

基于对数变换的图像美白增强,Matlab实现

博主简介&#xff1a;matlab图像处理&#xff08;QQ:3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于对数变换的图像美白增强&#xff0c;用matlab实现。 一、案例背景和算法介绍 这次案例是美白算法&…

在实际LabVIEW开发中,哪些算法是常用的?

在LabVIEW的实际开发中&#xff0c;常用的算法主要集中在数据处理、控制系统、信号处理、图像处理等领域。以下是一些常用算法的介绍&#xff1a; 1. PID控制算法 PID&#xff08;比例-积分-微分&#xff09;控制是LabVIEW中常用的算法之一&#xff0c;广泛应用于工业自动化和…

剃(磨)前插齿刀设计计算开发第一步

之前接触滚刀比较多&#xff0c;渐开线齿轮滚刀的基准齿形的参数相对简单&#xff0c;都是由直线和圆弧组成的。插齿刀实质是一个开了前角后后角的“特殊齿轮”&#xff0c;在齿轮的齿形上增加“凸角”和“倒角”相对滚刀基准齿形就要复杂一些了&#xff1a; 要设计一款剃&…

深入分析计算机网络性能指标

速率带宽吞吐量时延时延带宽积往返时间RTT利用率丢包率图书推荐内容简介作者简介 速率 连接在计算机网络上的主机在数字信道上传送比特的速率&#xff0c;也称为比特率或数据率。 基本单位&#xff1a;bit/s&#xff08;b/s、bps&#xff09; 常用单位&#xff1a;kb/s&#x…

MacOS Catalina 从源码构建Qt6.2开发库之01: 编译Qt6.2源代码

安装xcode&#xff0c; cmake&#xff0c; ninja brew install node mac下安装OpenGL库并使之对各项目可见 在macOS上安装OpenGL通常涉及到安装一些依赖库&#xff0c;如MGL、GLUT或者是GLEW等&#xff0c;同时确保LLVM的OpenGL框架和相关工具链的兼容性。以下是一个基本的安装…

【算法】动态规划—编辑距离

题目 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 思路分析 编辑距离问题就是给定两个字符串 s1 和 s2&#xff0c;只能用三种操作…