笔记6——字典dict(dictionary)
文章目录
- 字典dict(dictionary)
- 定义
- 特点
- 常用操作
- 1.访问值
- 2.添加键值对
- 3.修改值
- 4.删除键值对
- 5.遍历字典
- 6.合并字典
- 性能
- 应用场景
- dict和list的区别
字典dict(dictionary)
以 键 - 值对 (key - value pairs)的形式存储数据
定义
- 字典使用花括号 {} 来定义,键和值之间用冒号 : 分隔,不同键值对之间用逗号 , 分隔
- 也可以通过 dict() 函数定义
# 直接使用{}定义
my_dict = {'name':'echo','age':'24','city':'shanghai'}
# 使用 dict() 函数定义
my_dict2 = dict(name='echo',age='24',city='shanghai')print(my_dict)
print(my_dict2)

特点
- 无序性 :键值对没有特定的顺序,不能通过索引来访问,只能通过键来访问对应的值
- 字典的可变性 :可以添加、删除或修改字典中的键值对
- 键的唯一性 :键是唯一的,如果多次赋值,会覆盖;
- 键的不可变性 :dict通过key计算位置的算法即为哈希算法Hash,dict的key必须是不可变对象,如字符串、整数等;但列表list可变,不可作为key
常用操作
1.访问值
- 通过方括号 [ ]
如果键不存在,会抛出keyError异常
my_dict = {'name':'echo','age':'24','city':'shanghai'}value1 = my_dict['name']
#value_test = my_dict['test']#如果键不存在,会抛出keyError异常
print(value1)
#print(value_test)

- 通过 get() 方法
如果键不存在,会返回 None ,或者自己 指定的value
my_dict = {'name':'echo','age':'24','city':'shanghai'}value2 = my_dict.get('city')
value3 = my_dict.get('mood')#如果键不存在,会返回None,或者自己指定的value
value4 = my_dict.get('mood','happy')
print(value2)
print(value3)
print(value4)

- 通过 in 判断key是否存在
my_dict = {'name':'echo','age':'24','city':'shanghai'}
print('mood' in my_dict)

2.添加键值对
直接使用 [ ] 赋值来添加新的键值对
my_dict = {'name':'echo','age':'24','city':'shanghai'}
my_dict['wealth'] = 'priceless'
print(my_dict['wealth'])

3.修改值
通过指定键来修改对应的值
my_dict = {'name':'echo','age':'24','city':'shanghai'}
print(my_dict)my_dict['age'] = 1
print(my_dict['age'])

4.删除键值对
- 使用 del 关键字
使用 del 语句根据键删除对应的键值对,如果键不存在,会抛出KeyError异常
my_dict = {'name':'echo','age':'24','city':'shanghai'}del my_dict['age']
print (my_dict)
# del my_dict['mood'] #如果键不存在,会抛出KeyError异常

- 使用 pop() 方法
pop() 方法根据键删除对应的键值对,并 返回该键对应的值 ,如果键不存在且未指定默认值,会引发 KeyError
my_dict = {'name':'echo','age':'24','city':'shanghai'}value = my_dict.pop('city')
print(value)
print(my_dict) #dict内部存放的顺序和key放入的顺序是没有关系的

5.遍历字典
- 遍历键
通过 keys() 方法遍历键
my_dict = {'name':'echo','age':'24','city':'shanghai'}for key in my_dict.keys():print(key)

- 遍历值
使用 values() 方法遍历值
my_dict = {'name':'echo','age':'24','city':'shanghai'}for value in my_dict.values():print(value)

- 遍历键值对
使用 items() 方法遍历键值对
my_dict = {'name':'echo','age':'24','city':'shanghai'}for key,value in my_dict.items():print(f'{key}:{value}')

6.合并字典
可以使用 update() 方法将一个字典的键值对合并到另一个字典中
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)
print(dict1) # 输出: {'a': 1, 'b': 3, 'c': 4}

性能
- 查找:字典的查找操作平均时间复杂度为 O(1) ,因为底层使用 () 哈希表实现
- 插入/删除:插入和删除操作的平均时间复杂度也是 O(1)
应用场景
- 存储配置信息:将各种配置参数以键值对的形式存储在子典中,方便读取和修改
- 统计词频:同此出现的次数
- 缓存数据:将计算结果或者从数据库查询到的数据存储到字典中,以提高后续访问速度
dict和list的区别
1. dict
- 查找和插入的速度极快,不会随着key的增加而慢
- 需要占用大量的内存,内存耗费大
2. list - 查找和插入的时间随着元素的增加而增加
- 占用空间小,浪费内存很少
所以, dict是用空间来换取时间的一种方法
相关文章:
笔记6——字典dict(dictionary)
文章目录 字典dict(dictionary)定义特点常用操作1.访问值2.添加键值对3.修改值4.删除键值对5.遍历字典6.合并字典 性能应用场景dict和list的区别 字典dict(dictionary) 以 键 - 值对 (key - value pairs)的形式存储数据 定义 字典使用花括号 {} 来定义,键和值之…...
【MySQL】InnoDB单表访问方法
目录 1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】all 4、总结 1、背景 mysql通过查询条件查询到结果的过程就叫访问方法,一条查询语句的访问方法有很多种,接下来我们就来讲一下各种访问方法。 2、环境 创…...
APP端网络测试与弱网模拟!
当前APP网络环境比较复杂,网络制式有2G、3G、4G网络,还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响。另外,当前app使用场景多变,如进地铁、上公交、进电梯等,使…...
【个人开发】deepseed+Llama-factory 本地数据多卡Lora微调
文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.4 微调脚本 2.3 踩坑经验2.3.1 问题一:ValueError: Undefined dataset xxxx in dataset_info.json.2.3.2 问题二: ValueError: Target…...
Redis7.0八种数据结构底层原理
导读 本文介绍redis应用数据结构与物理存储结构,共八种应用数据结构和 一. 内部数据结构 1. sds sds是redis自己设计的字符串结构有以下特点: jemalloc内存管理预分配冗余空间二进制安全(c原生使用\0作为结尾标识,所以无法直接存储\0)动态计数类型(根据字符串长度动态选择…...
Kafka 高吞吐量的底层技术原理
Kafka 之所以能够实现高吞吐量(每秒百万级消息处理),主要依赖于其底层设计和多项优化技术。以下是 Kafka 实现高吞吐量的关键技术原理: 1. 顺序读写磁盘 Kafka 利用磁盘的顺序读写特性,避免了随机读写的性能瓶颈。 顺…...
CCFCSP第34次认证第一题——矩阵重塑(其一)
第34次认证第一题——矩阵重塑(其一) 官网链接 时间限制: 1.0 秒 空间限制: 512 MiB 相关文件: 题目目录(样例文件) 题目背景 矩阵(二维)的重塑(reshap…...
网络工程师 (35)以太网通道
一、概念与原理 以太网通道,也称为以太端口捆绑、端口聚集或以太链路聚集,是一种将多个物理以太网端口组合成一个逻辑通道的技术。这一技术使得多个端口能够并行工作,共同承担数据传输任务,从而提高了网络的传输能力和可靠性。 二…...
O1、R1和V3模型
O1、R1和V3模型分别是不同团队或公司开发的人工智能模型,它们在定位、能力和应用场景上存在显著区别。以下是它们的详细对比: 1. 模型归属 O1模型:由OpenAI开发,属于其高性能推理模型系列。 R1和V3模型:由DeepSeek&a…...
Linux 安装 Ollama
1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…...
docker配置国内源
配置Docker使用国内源(也称为镜像加速器)可以显著提高拉取Docker镜像的速度,特别是在中国地区。以下是如何配置Docker使用国内源的步骤: 1. 修改Docker配置文件 Docker的配置文件通常位于/etc/docker/daemon.json。如果该文件不…...
【leetcode】关于循环数组的深入分析
原题:https://leetcode.cn/problems/rotate-array/description/ 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1…...
DeepSeek 指导手册(入门到精通)
第⼀章:准备篇(三分钟上手)1.1 三分钟创建你的 AI 伙伴1.2 认识你的 AI 控制台 第二章:基础对话篇(像交朋友⼀样学交流)2.1 有效提问的五个黄金法则2.2 新手必学魔法指令 第三章:效率飞跃篇&…...
【力扣题解】【76. 最小覆盖子串】容易理解版
76. 最小覆盖子串 总结和复盘 这是时隔1年4个月之后,再次写的题解,比第一次要清晰很多。 我刚开始,就是用方法一做的,提交之后报超出内存限制; 对方法一进行优化,得到方法二,提交之后就AC了。…...
Android10 音频参数导出合并
A10 设备录音时底噪过大,让音频同事校准了下,然后把校准好的参数需要导出来,集成到项目中,然后出包,导出方式在此记录 设备安装debug系统版本调试好后, adb root adb remount adb shell 进入设备目录 导…...
在 Windows 系统中如何快速进入安全模式的两种方法
在使用电脑的过程中,有时我们可能会遇到一些需要进入“安全模式”来解决的问题。安全模式是一种特殊的启动选项,它以最小化配置启动操作系统,仅加载最基本的驱动程序和服务,从而帮助用户诊断和修复系统问题。本文中简鹿办公将详细…...
计算机网络(1)基础篇
目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先,为什么要有 TCP/IP 网络模型&a…...
自然语言处理NLP入门 -- 第四节文本分类
目标 本章的目标是帮助你理解文本分类的基本概念,并通过具体示例学习如何使用 scikit-learn 训练文本分类模型,以及如何利用 OpenAI API 进行文本分类。 5.1 什么是文本分类? 文本分类(Text Classification)是自然语…...
【redis】数据类型之bitmaps
Redis的Bitmaps是一种基于字符串的数据结构,用于处理位级别的操作。虽然Bitmaps在Redis中并不是一种独立的数据类型,而是基于字符串实现的,但它们提供了高效的位操作功能,适用于需要处理大量布尔值或二进制数据的场景。 基本概念…...
计算机网络-MPLS转发原理
在上一篇关于 MPLS 基础的文章中,我们了解了 MPLS 的基本概念、术语以及它在网络中的重要性。今天,我们将深入探讨 MPLS 转发的原理与流程,帮助大家更好地理解 MPLS 是如何在实际网络中工作的。 一、MPLS 转发概述 MPLS 转发的本质是将数据…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
