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.pswp.cn/bicheng/79691.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79691.shtml
英文地址,請注明出處:http://en.pswp.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…