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.mfbz.cn/a/878663.html

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

相关文章

C++ | Leetcode C++题解之第407题接雨水II

题目&#xff1a; 题解&#xff1a; class Solution { public:int trapRainWater(vector<vector<int>>& heightMap) {int m heightMap.size(), n heightMap[0].size();int maxHeight 0;int dirs[] {-1, 0, 1, 0, -1};for (int i 0; i < m; i) {maxHei…

python中的各类比较与计算

运算符 1.算数运算符2.关系运算符3.逻辑运算符4.关于短路求值5.赋值运算符1&#xff09;的使用链式赋值多元赋值 2)复合赋值运算符 6.位运算符7.成员运算符8.身份运算符 1.算数运算符 # 加 print(1 2) # 减 print(2 - 1) # 乘 print(1 * 2) # 余数 4%31余数为1 print(4 % 3…

【Redis】之Geo

概述 Geo就是Geolocation的简写形式&#xff0c;代表地理坐标。在Redis中&#xff0c;构造了能够存储地址坐标信息的一种数据结构&#xff0c;帮助我们根据经纬度来检索数据。 命令行操作方法 GEOADD 可以用来添加一个或者多个地理坐标。 GEODIST 返回一个key中两个成员之…

F12抓包11:UI自动化 - Recoder(记录器)

课程大纲 使用场景&#xff08;导入和导出&#xff09;: ① 测试的重复性工作&#xff0c;本浏览器录制并进行replay&#xff1b; ② 导入/导出录制脚本&#xff0c;移植后replay&#xff1b; ③ 导出给开发进行replay复现bug&#xff1b; ④ 进行前端性能分析。 1、录制脚…

微软数据库的SQL注入漏洞解析——Microsoft Access、SQLServer与SQL注入防御

说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 。…

pytorch快速入门(一)—— 基本工具及平台介绍

前言 该pytorch学习笔记应该配合b站小土堆的《pytorch深度学习快速入门教程》使用 环境配置&#xff1a;Anaconda Python编译器&#xff1a;pycharm、jupyter 两大法宝函数 dir&#xff08;&#xff09;&#xff1a;知道包中有什么东西&#xff08;函数 / 属性..…

llama网络结构及源码

目录 模型初始化 config lm_head transformer wte h rms_1/rms_2 attn c_attn c_proj 线性层mlp ln_f rope_cache mask_cache kv_caches tokenizer tokenizer初始化 tokennizer.encoder 位置编码和mask 确定最大文本长度 建立rope_cache 建立mask_cache …

信奥初赛解析:1.1-计算机概述

目录 前言 知识要点 一、发展史 二、计算机的分类 三、计算机的基本特征 四、计算机的应用 课堂练习 题目列表 定项选择题 不定项选择题 参考答案 定项选择题 不定项选择题 前言 从今天开始&#xff0c;我们要重点讲初赛内容&#xff0c; 预计讲半年&#xff0c;信…

Linux下编译Kratos

本文记录在Linux下编译Kratos的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1Boost1.74.0oneAPI2024.2.1 一、依赖与代码 1.1 安装依赖 apt-get update apt-get install vim openssh-server openssh-client ssh \build-essential …

Oracle发邮件功能:设置的步骤与注意事项?

Oracle发邮件配置教程&#xff1f;如何实现Oracle发邮件功能&#xff1f; Oracle数据库作为企业级应用的核心&#xff0c;提供了内置的发邮件功能&#xff0c;使得数据库管理员和开发人员能够通过数据库直接发送邮件。AokSend将详细介绍如何设置Oracle发邮件功能。 Oracle发邮…

电气自动化入门01:电工基础

视频链接&#xff1a;1.1 电工知识&#xff1a;电工基础_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ41117PW?p2&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.电能和电力系统 2.电工常用物理量及其应用 2.1电阻&#xff1a; 2.2电流&#xff1a; 2.3电压&…

面试官问:请描述一次你成功解决问题的经历?

面试官为什么要这么问&#xff1f; 面试官问你描述一次成功解决问题的经历&#xff0c;主要是为了评估你的几个关键方面&#xff1a; 问题解决能力&#xff1a;了解你在面对挑战时的思维方式和应对策略。 决策能力&#xff1a;考察你在压力下做出明智决定的能力。 沟通技巧&am…

Python 全栈系列271 微服务踩坑记

说明 这个坑花了10个小时才爬出来 碰到一个现象&#xff1a;将微服务改造为并发后&#xff0c;请求最初很快&#xff0c;然后就出现大量的失败&#xff0c;然后过一会又能用。 过去从来没有碰到这个问题&#xff0c;要么是一些比较明显的资源&#xff0c;或者逻辑bug&#xff0…

使用Python生成多种不同类型的Excel图表

目录 一、使用工具 二、生成Excel图表的基本步骤 三、使用Python创建Excel图表 柱形图饼图折线图条形图散点图面积图组合图瀑布图树形图箱线图旭日图漏斗图直方图不使用工作表数据生成图表 四、总结 Excel图表是数据可视化的重要工具&#xff0c;它通过直观的方式将数字信…

CesiumJS+SuperMap3D.js混用实现可视域分析 S3M图层加载 裁剪区域绘制

版本简介&#xff1a; cesium&#xff1a;1.99&#xff1b;Supermap3D&#xff1a;SuperMap iClient JavaScript 11i(2023)&#xff1b; 官方下载文档链家&#xff1a;SuperMap技术资源中心|为您提供全面的在线技术服务 示例参考&#xff1a;support.supermap.com.cn:8090/w…

嵌入式鸿蒙系统开发语言与开发方法分析

大家好,今天主要给大家分享一下,HarmonyOS系统的主力开发语言ArkTS语言开发方法,它是基于TypeScript(简称TS)语言扩展而来。 第一:ArkTS语言基本特性 目的:声明式UI,让开发者以更简洁,更自然的方式开发高性能应用。 声明式 UI基本特性: 基本UI描述:ArkTS定义了各种装饰…

Docker-compose:管理多个容器

Docker-Compose 是 Docker 公司推出的一个开源工具软件&#xff0c;可以管理多个 Docker 容器组成一个应用。用户需要定义一个 YAML 格式的配置文件 docker-compose.yml&#xff0c;写好多个容器之间的调用关系。然后&#xff0c;只要一个命令&#xff0c;就能同时启动/关闭这些…

Jenkins部署若依项目

一、配置环境 机器 jenkins机器 用途&#xff1a;自动化部署前端后端&#xff0c;前后端自动化构建需要配置发送SSH的秘钥和公钥&#xff0c;同时jenkins要有nodejs工具来进行前端打包&#xff0c;maven工具进行后端的打包。 gitlab机器 用途&#xff1a;远程代码仓库拉取和…

HTML5超酷炫的水果蔬菜在线商城网站源码系列模板1

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059238 HTML5超酷炫的水果蔬菜在线商城网…

动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习

动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG&#xff1a;迟交互模型colbert微调实践 bge-m3 1. 环境准备 pip install transformers pip install open-retrievals注意安装时是pip install open-retrievals&#xff0c;但调用时只…