当前位置: 首页 > news >正文

笔记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 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 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 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...