Python之学习笔记(六)

文章目录

  • 1. 字典(Dictionary)
  • 2. 集合(Set)
  • 3. 字典 vs 集合
  • 4. 应用场景
  • 5. 注意事项

Python中的字典( dict)和集合( set)是两种高效且常用的数据结构,适用于不同的场景。以下是它们的核心概念、操作、区别及典型应用:


1. 字典(Dictionary)

  • 定义:键值对(key-value)的无序集合(Python 3.7+ 后字典按插入顺序保留)。
  • 特点
    • 键(key)必须唯一且不可变(如字符串、数字、元组)。
    • 值(value)可以是任意类型。
  • 操作
    # 创建
    d = {"name": "Alice", "age": 25}
    d = dict(name="Bob", age=30)# 访问
    print(d["name"])        # Alice(KeyError 若键不存在)
    print(d.get("age", 0))  # 25(若键不存在返回默认值0)# 添加/修改
    d["gender"] = "Female"  # 添加新键值对
    d["age"] = 26           # 修改已有键的值# 删除
    del d["gender"]         # 删除键值对
    value = d.pop("age")    # 弹出并返回值# 常用方法
    keys = d.keys()         # 所有键的视图
    values = d.values()     # 所有值的视图
    items = d.items()       # 所有键值对的视图# 字典推导式
    squares = {x: x**2 for x in range(5)}  # {0:0, 1:1, 2:4, ...}
    

2. 集合(Set)

  • 定义:无序、不重复元素的容器。
  • 特点
    • 元素必须不可变(如数字、字符串、元组)。
    • 支持数学集合运算(并集、交集等)。
  • 操作
    # 创建
    s = {1, 2, 3}
    s = set([1, 2, 2, 3])  # {1, 2, 3}(去重)# 添加/删除
    s.add(4)                # 添加元素
    s.remove(3)             # 删除元素(KeyError 若不存在)
    s.discard(5)            # 安全删除(无异常)# 集合运算
    a = {1, 2, 3}
    b = {3, 4, 5}
    print(a | b)   # 并集 {1,2,3,4,5}
    print(a & b)   # 交集 {3}
    print(a - b)   # 差集 {1, 2}
    print(a ^ b)   # 对称差集 {1,2,4,5}# 集合推导式
    even = {x for x in range(10) if x % 2 == 0}  # {0,2,4,6,8}
    

3. 字典 vs 集合

特性字典(dict)集合(set)
存储方式键值对(key: value单一元素
有序性Python 3.7+ 保留插入顺序无序
唯一性键唯一元素唯一
元素类型键不可变,值任意元素必须不可变
查找速度O(1)(基于键)O(1)(基于元素)
典型用途数据映射、结构化信息存储去重、集合数学运算

4. 应用场景

  • 字典

    • 存储对象属性(如用户信息:{"name": "Alice", "age": 25})。
    • 快速查找表(如单词计数器:{"apple": 5, "banana": 3})。
    • JSON数据解析与存储。
  • 集合

    • 去除列表中的重复元素:unique = list(set(duplicate_list))
    • 成员关系测试(如检查IP是否在黑名单)。
    • 集合运算(如求共同好友:friends_a & friends_b)。

5. 注意事项

  • 字典:避免使用可变类型(如列表)作为键。
  • 集合:空集合必须用 set() 创建,{} 表示空字典。
  • 两者均依赖哈希表实现,查找速度极快(O(1))。

初稿,未完待续……

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

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

相关文章

缓存与数据库的高效读写流程解析

目录 前言1 读取数据的流程1.1 检查缓存是否命中1.2 从数据库读取数据1.3 更新缓存1.4 返回数据 2 写入数据的流程2.1 更新数据库2.2 更新或删除缓存2.3 缓存失效 3 缓存与数据库的一致性问题3.1 写穿(Write-through)策略3.2 写回(Write-back…

PowerShell 备份 Windows10/11 还原计算机驱动程序SOP

一、现在计算机C目录下创建一个新的文件夹名称为 driverbackup 二、打开cmd 以管理员身份执行 dism /online /export-driver /destination: C:\driverbackup 在正常情况下,Windows 10会自动检测您的设备所需的驱动程序,并将其安装到您的PC上。 但是&am…

自监督学习(Self-supervised Learning)李宏毅

目录 Self-supervised Learning简介: BERT : How to use BERT case1:sequence to class 语言积极性OR消极性判断 case2:sequence to sequence句子中的词语词性标注 case3:sequence2 to class两个句子是不是一个为前提一个为…

Python基于Django的全国二手房可视化分析系统【附源码】

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

解决 3D Gaussian Splatting 中 SIBR 可视化组件报错 uv_mesh.vert 缺失问题【2025最新版!】

一、📌 引言 在使用 3D Gaussian Splatting(3DGS)进行三维重建和可视化的过程,SIBR_gaussianViewer_app 是一款官方推荐的本地可视化工具,允许我们在 GPU 上实时浏览重建结果。然而,许多用户在启动该工具时…

shell_plus

python manage.py shell_plus 是由 django-extensions 提供的一个增强版的 Django shell,它自动导入你的所有模型和其他一些便捷功能,使得交互式开发更加方便。 如果你遇到配置或运行问题,特别是与 RQ_SHOW_ADMIN_LINK 相关的 ImproperlyCon…

文章记单词 | 第62篇(六级)

一,单词释义 noon [nuːn] n. 中午,正午clothes [kləʊz] n. 衣服,衣物reward [rɪˈwɔːd] n. 报酬,奖赏;vt. 奖励,奖赏newly [ˈnjuːli] adv. 最近,新近;以新的方式premier [ˈ…

Linux watch 命令使用详解

简介 watch 命令会以固定间隔(默认每 2 秒)重复运行给定命令,并在终端上显示其输出。它非常适合监控不断变化的输出,例如磁盘使用情况、内存使用情况、文件更改、服务状态等。 基础语法 watch [options] command常用选项 -n, -…

C++类_成员函数指针

在 C11 里,成员函数指针是一种特殊的指针,它指向类的成员函数。下面详细介绍成员函数指针的定义、使用及注意事项。 定义 成员函数指针的定义格式如下: 返回类型 (类名::*指针名)(参数列表);例如: class MyClass { public:voi…

qmt下载的数据放在了哪里了?

#qmt获取日线数据 from xtquant import xtdata # 设置股票代码列表和时间范围 stock_list xtdata.get_stock_list_in_sector(沪深A股) # print("获取到的股票列表:", stock_list,len(stock_list)) start_time 20240501 end_time 20250501# 下载多只股票…

深入浅出数据库管理系统

数据库管理系统:数字世界的“隐形管家” ——从数据杂乱到井井有条的秘密武器 一、数据库管理系统:数字世界的“隐形管家” 你有没有想过,为什么我们在电商平台购物时,商品库存能实时更新?为什么银行转账时&#xff…

关于Docker拉取镜像超时/无法访问镜像仓库解决方案

文章目录 关于Docker拉取镜像超时/无法访问镜像仓库解决方案卸载原先安装的Docker及相关配置使用代理后无法拉取镜像解决方案验证代理连通性安装 Docker 最新版配置 Docker Daemon HTTP 代理重启验证与拉取镜像 不使用代理解决方案安装 Docker 最新版配置阿里云容器镜像加速 关…

Docker Compose:服务编排:批量管理多个容器

通过docker compose进行容器批量管理:一次性启动四个容器(nginx,tomcat,redis,mysql) (1) 创建docker-compose目录 mkdir ~/docker-compose cd ~/docker-compose (2&…

Java面试大纲(以及常见面试问答)

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Java面试大纲(以及常见面试问答&…

2025年- H25-Lc133- 104. 二叉树的最大深度(树)---java版

1.题目描述 2.思路 返回左右子树中,最高高度的子树,高度从0开始计数。 3.代码实现 class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;…

个性化推荐:大数据引领电子商务精准营销新时代

个性化推荐:大数据引领电子商务精准营销新时代 引言 在电子商务的时代,个性化推荐系统已经成为提升用户体验、增强平台竞争力的重要技术。随着大数据技术的迅猛发展,传统的推荐方法已经无法满足用户日益增长的需求。为了精准地把握用户兴趣和消费倾向,商家们依赖大数据分析…

VulnHub-OSCP靶机

前言:由于这台机器过于简单,所以我会尽量细化和介绍每个步骤以及涉及到的知识点,让正在打入门机器的你不在迷茫和硬化的操作,理解并熟悉每条命令以及参数的含义,以及把前期带给我们的信息进行快速筛选,有利…

传感器数据处理笔记

里程计模型: 两轮差分地盘的运动学模型三轮全向底盘的运动学模型航迹推算(Dead Reckoning) 里程计标定 线性最小二乘的基本原理最小二乘的直线拟合最小二乘在里程计标定中的应用 差分底盘的优势就是: 结构简单便宜&#xff0…

Spring的循环依赖问题和解决方案

在Spring框架中,循环依赖指的是两个或多个Bean之间相互依赖,形成闭环。例如,Bean A依赖于Bean B,而Bean B又依赖于Bean A。这种情况如果处理不当,会导致应用程序无法正常启动。 形成原因 构造函数注入:当使…

PDF转换工具xpdf-tools-4.05

XPDF是一个开源的PDF查看、提取和转换工具套件,使用C编写,支持多种操作系统,包括Linux、Unix、OS/2、Windows和Mac OS X‌1。XPDF不仅是一个PDF查看器,还包含多个实用工具,如文本提取器、图像转换器和HTML转换器等‌&a…