🤝 免罵聲明:
- 本文
字典獲取內容和刪除操作經本蜀黎實戰整理,旨在提供快速參考指南📝- 因各語言版本迭代及不同系統
環境差異,偶爾可能出現整理不全面之處,實屬正常✅- 歡迎理性交流補充,噴子勿噴——畢竟你行你上來寫,我敬你是條漢子,告訴我的你原文鏈接,我給你一鍵三連+轉發👍!
- 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
📚 【虎山CTO劇透預警·字典基礎四部曲】
“藥櫃不識抽屜,何談配伍君臣?” ——《冷溪虎山·數據結構心法》✅
🎯 本期作戰地圖(字典基礎操作完整路線):
- **第25篇:字典創建轉換⏬
-
- 學建藥櫃抽屜,貼藥材標籤🌈
- 第26篇:字典轉換2和遍歷🥇
-
- 開櫃查藥性,遍歷如把脈🙏
- 第27篇:字典獲取內容和刪除🥈 ← 當前位置🏆**
-
- 精準抓藥配伍,清理過期藥材🔍
- 第28篇:字典的複製和更新🥉
-
- 藥方傳承修訂,數據庫版本管理📌
🚀 高階應用預告(100+篇後深度解鎖):
- 嵌套字典 = 藥櫃中的小藥格(多維數據建模)🎨
- 字典視圖 = 藥材目錄快速檢索(內存優化技巧)🔎
- 序列化存儲 = 藥方存檔傳承(JSON/數據庫持久化)🥓
💡 虎山CTO學習心法:
- 「字典如藥櫃——創建是打基礎,遍歷是練把脈,增刪是學配伍,複製是傳藥方」🌿
- 四篇環環相扣,建議按序學習,否則如抓藥不識抽屜——君臣錯位,藥性相沖🔁
🌿 特別警示:
- 本系列是後期高級應用(API交互/配置管理/緩存系統)的基石👊
- 跳過基礎直接學高階 → 相當於未背藥性就開方,必遭反噬😱
- 字典將貫穿後續200+篇實戰場景,此處不牢,地動山搖!⚠️
🌿【虎山CTO·藥材使用警示】
- 🍀是藥
三分毒,代碼亦如方! - ❌文中所涉藥材均為技術隱喻,嚴禁實際配伍使用。
- 🙏真實用藥請遵醫囑,亂用者——
- 系統崩壞事小,氣血逆流事大!⚠️
📚 系列文章預告:
- 近期內容將聚焦編程基礎構建,以
「原創知識矩陣」形式系統梳理核心概念。每篇如連續劇集般環環相扣,建議按順序學習——知識點一鍋端,療效更持久!🔥
🧠【場景還原:字典增刪查改特訓】
⚡ 雷影老闆(一拳砸碎鍵盤):
- 「🏆今天學字典獲取和刪除——查藥如把脈,刪鍵如排毒!學不會的,通宵手寫《哈希表排毒心法》1000遍!」
🦊 鳴人(對着藥材數據庫抓狂):
- 「伊魯卡老師!為什麼Python用
get()安全查藥,Java要getOrDefault()?Go還能雙返回值?我的藥材庫要炸了!😫」
👨🏫 伊魯卡(粉筆頭精準命中後腦):
- 鳴人!字典操作如開方——🧬
- get()=温和把脈,
setdefault()=智能補方,pop()=精準排毒,popitem()=隨機泄火🥓 - 暴力刪除=藥方撕頁,君臣失序!🌿
🐯 卡卡西(從《親熱天堂》後抬眼):
- 「🎰嘖...連安全查藥都不會,以後怎麼學影分身·緩存清理之術?」
🧘【扎馬步·字典增刪查改心法】
📚 四大核心操作如中醫四診:
- 安全獲取 → 望聞問切(避免
KeyError驚厥)🥇 - 智能設值 → 補氣養血(無則補之,有則安之)🥈
- 精準刪除 → 攻邪排毒(定點清除病灶)🥉
- 隨機移除 → 通因通用(散結化瘀)🎯
🔍 操作要訣如用藥禁忌:
- 查前宜判空 → 切脈先辨虛實(防空指針)🍒
- 刪後須驗存 → 攻邪不忘扶正(防數據丟失)🩸
- 設值需謹慎 → 補瀉當分緩急(防覆蓋重要數據)🧬
🌿 虎山CTO心法要訣:
- 查藥如把脈:
get()要温柔,雙返回值最穩妥 - 補方如用藥:
setdefault()要精準,原子操作最安全 - 排毒如手術:
pop()要果斷,刪除前後要驗證 - 通絡如針灸:
popitem()要隨機,順序環境要注意
🐍【Python篇·藥櫃精準抓取術】
# 安全查藥 → 温柔把脈留退路
藥性 = 藥櫃.get("丹蔘", "活血") # 有則取之,無則默認
# 智能補方 → 老藥師的內存外掛
藥櫃.setdefault("紅花", "活血") # 無則補之,有則不動
# 精準排毒 → 手術刀式切除
毒性 = 藥櫃.pop("附子") # 切除並返回毒性説明
# 隨機泄火 → 抽籤療法
隨機藥 = 藥櫃.popitem() # 隨機移除一對(3.7+保序)
💣【JavaScript篇·丹爐安全操作術】
// 安全查藥 → 防炸爐緩衝術
const 藥性 = 藥櫃["丹蔘"] || "活血" // 短路運算保平安
// 智能補方 → 煉丹師的內存外掛
藥櫃["紅花"] = 藥櫃["紅花"] || "活血" // 無則添加,有則保留
// 精準排毒 → 丹方排毒術
delete 藥櫃["附子"] // 直接刪除,無返回值
// 隨機泄火 → 抽籤療法(手動實現)
const 最後鍵 = Object.keys(藥櫃).pop()
const 隨機藥 = 藥櫃[最後鍵]
delete 藥櫃[最後鍵]
⚡【Go篇·倉儲智能管理術】
// 安全查藥 → 防崩潰智能手套
if 藥性, exists := 藥櫃["丹蔘"]; exists {
fmt.Println(藥性) // 安全提取
} else {
fmt.Println("活血") // 應急補給
}
// 智能補方 → 倉庫貓的應急補給
if _, exists := 藥櫃["紅花"]; !exists {
藥櫃["紅花"] = "活血" // 缺貨時補倉
}
// 精準排毒 → 物流截肢術
delete(藥櫃, "附子") // 暴力下架,無返回值
// 隨機泄火 → 年終清倉抽獎
for 鍵 := range 藥櫃 { // 隨機取一個
fmt.Println(藥櫃[鍵])
delete(藥櫃, 鍵)
break // 只刪一個
}
☕【Java篇·ERP系統維護術】
// 安全查藥 → 系統防崩潰護甲
String 藥性 = 藥櫃.getOrDefault("丹蔘", "活血"); // 泛型安全查詢
// 智能補方 → 程序員的腦外存
藥櫃.putIfAbsent("紅花", "活血"); // 原子性安全添加
// 精準排毒 → 數據庫腫瘤切除術
String 毒性 = 藥櫃.remove("附子"); // 切除並返回毒性説明
// 隨機泄火 → 內存救急刮刮樂
if (!藥櫃.isEmpty()) {
String 隨機鍵 = 藥櫃.keySet().iterator().next(); // 取第一個
String 隨機藥 = 藥櫃.remove(隨機鍵); // 移除並返回
}
四語言字典安全操作對比表
| 操作類型 | Python | JavaScript | Go | Java |
|---|---|---|---|---|
| 安全獲取 | get(key, default) |
dict[key] ?? default
dict?.key ?? default |
val, ok := dict[key] |
getOrDefault(key, default) |
| 智能設值 | setdefault(key, default) |
dict[key] = dict[key] ?? default
dict[key] ||= default (ES2021+) |
手動檢查+賦值 | putIfAbsent(key, value) |
| 精準刪除 | pop(key) |
delete dict[key] |
delete(dict, key) |
remove(key) |
| 隨機移除 | popitem() |
取末尾key後刪除 | 遍歷取首個key刪除 | 迭代器移除 |
| 操作安全性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 特點説明 | 方法安全簡潔,內置容錯 | 需手動判空,容易遺漏 | 通過ok布爾值判斷存在性 |
線程安全容器支持 |
⚠️【避坑指南·操作界的"藥方失誤"】
🐍 Python:popitem()在舊版本無序
# 💥 Python 3.6前:popitem()隨機刪除,不是LIFO
藥櫃 = {"A":1, "B":2, "C":3}
藥櫃.popitem() # 可能刪除任意鍵值對
# ✅ Python 3.7+:popitem()刪除最後插入的(LIFO)
💣 JavaScript:delete不返回值的陷阱
// 💥 delete不返回值,無法知道刪除內容
const 藥櫃 = {"附子":"有毒"};
const 已刪除 = delete 藥櫃["附子"]; // 返回true/false,不是刪除的值
// ✅ 需要先保存再刪除
const 毒性 = 藥櫃["附子"];
delete 藥櫃["附子"];
⚡ Go:delete前必須檢查存在性
// 💥 直接delete不存在的key不會報錯,但可能邏輯錯誤
delete(藥櫃, "不存在的藥") // 靜默失敗
// ✅ 先檢查再操作
if _, exists := 藥櫃["附子"]; exists {
delete(藥櫃, "附子")
fmt.Println("排毒成功")
}
☕ Java:remove()的併發風險
// 💥 非原子操作可能競態條件
if (藥櫃.containsKey("附子")) {
藥櫃.remove("附子"); // 中間可能被其他線程修改
}
// ✅ 使用原子性方法
String 毒性 = 藥櫃.remove("附子"); // 直接返回刪除的值
if (毒性 != null) {
System.out.println("排毒成功");
}
以下是本蜀黎整理源碼和截圖⏬
1.Python源碼⏬
# ==================== 財務字典模塊 ====================
# 餘額表.get("現金", 0) # 温柔查賬留退路 🧘
# 税率表.setdefault("增值税", 0.13) # 智能補漏小能手 🧠
# 壞賬準備.pop("A客户") # 精準切除財務腫瘤 🏥
# 暫估科目.popitem() # 隨機抓個倒黴科目 🎲
# ⚠️ERP_冷溪虎山:亂刪科目會導致報表癱瘓
dict_blood = {"當歸":"補血","丹蔘":"活血","莪術":"破血"} #血分藥 正常字符串字典
print("📗📗📗📗📗📗📗📗以下是通過key獲取值")
print(dict_blood.get("丹蔘")) #獲取丹蔘的值 活血
print(dict_blood.get("莪術","破血")) #獲取莪術的值 破血
print("\n","📗📗📗📗📗📗📗📗以下是添加key和值,有key則返回值")
print(dict_blood.setdefault("當歸")) #當歸存在,返回存在的值
print(dict_blood.setdefault("紅花","活血")) #新增鍵"紅花" 的值
print(dict_blood) #紅花 活血 會被添加到原字典中
print("\n","📗📗📗📗📗📗📗📗以下是刪除key和值")
dict_diaphoretic = {"防風":"辛温解表","細辛":"辛温解表(強)","升麻":"辛涼解表"}
print(dict_diaphoretic.pop("防風")) #刪除key
print(dict_diaphoretic.pop("香附","疏肝行氣")) #不在字典內的,刪除本行key
print(dict_diaphoretic.popitem()) #刪除最後一個key 輸出被刪除元組
# del dict_diaphoretic["升麻"] #直接刪除升麻鍵值對
print(dict_diaphoretic)
# dict_diaphoretic.clear() #清空字典
# del dict_diaphoretic #刪除字典對象
2.Nodejs源碼⏬
// ==================== 中藥字典模塊 ====================
// 安全獲取藥性 // 仙丹防炸爐緩衝術 🛡️
// 智能補全劑量 // 老藥師的內存外掛 💾
// 移除毒性藥材 // 丹方精準排毒術 🚑
// 隨機淘汰配伍 // 神農氏的抽籤療法 🎯
// ⚠️虎山老藥師:誤刪君藥會引發丹劫
console.log("📗📗📗📗📗📗📗📗以下是通過key獲取值");
const dictBlood = { "當歸": "補血", "丹蔘": "活血", "莪術": "破血" }; // 血分藥 正常字符串字典
console.log(dictBlood["丹蔘"]); // 獲取丹蔘的值 活血
console.log(dictBlood["莪術"] || "破血"); // 獲取莪術的值 破血(如果不存在則返回默認值)
console.log("\n", "📗📗📗📗📗📗📗📗以下是添加key和值,有key則返回值");
console.log(dictBlood["當歸"]); // 當歸存在,返回存在的值
dictBlood["紅花"] = "活血"; // 新增鍵"紅花" 的值
console.log(dictBlood); // 紅花 活血 會被添加到原字典中
console.log("\n", "📗📗📗📗📗📗📗📗以下是刪除key和值");
const dictDiaphoretic = { "防風": "辛温解表", "細辛": "辛温解表(強)", "升麻": "辛涼解表" };
console.log(dictDiaphoretic["防風"]); // 刪除key(JS沒有pop方法,直接訪問後可以手動刪除)
delete dictDiaphoretic["防風"]; // 手動刪除
console.log(dictDiaphoretic["香附"] || "疏肝行氣"); // 不在字典內的,返回默認值
console.log(dictDiaphoretic); // 刪除"防風"後剩餘的字典
// 模擬 popitem()(JS沒有直接對應的方法,可以手動實現)
const lastKey = Object.keys(dictDiaphoretic).pop(); // 獲取最後一個key
console.log(dictDiaphoretic[lastKey]); // 輸出被刪除的值
delete dictDiaphoretic[lastKey]; // 刪除最後一個key
console.log(dictDiaphoretic); // 最終結果
// dictDiaphoretic.clear(); // 清空字典
// delete dictDiaphoretic; // 刪除字典對象(JS中不能直接刪除變量,只能置為null)
3.Go源碼⏬
package main
import "fmt"
// ==================== 倉儲字典模塊 ====================
// 安全提取貨位 // 防崩潰的智能手套 🧤
// 缺省值填充 // 倉庫貓的應急補給 🐱
// 下架問題商品 // 物流系統的截肢術 🪚
// 隨機清理庫存 // 年終大清倉抽獎 🎁
// ⚠️冷溪物流:暴力刪除會導致貨架骨折
func main() {
fmt.Println("📗📗📗📗📗📗📗📗以下是通過key獲取值")
dictBlood := map[string]string{
"當歸": "補血",
"丹蔘": "活血",
"莪術": "破血",
}
fmt.Println(dictBlood["丹蔘"]) // 獲取丹蔘的值 活血
if val, ok := dictBlood["莪術"]; ok {
fmt.Println(val) // 獲取莪術的值 破血
} else {
fmt.Println("破血") // 如果不存在則返回默認值
}
fmt.Println("\n", "📗📗📗📗📗📗📗📗以下是添加key和值,有key則返回值")
fmt.Println(dictBlood["當歸"]) // 當歸存在,返回存在的值
if _, ok := dictBlood["紅花"]; !ok {
dictBlood["紅花"] = "活血" // 新增鍵"紅花" 的值(如果不存在才添加)
}
fmt.Println(dictBlood) // 紅花 活血 會被添加到原字典中
fmt.Println("\n", "📗📗📗📗📗📗📗📗以下是刪除key和值")
dictDiaphoretic := map[string]string{
"防風": "辛温解表",
"細辛": "辛温解表(強)",
"升麻": "辛涼解表",
}
fmt.Println(dictDiaphoretic["防風"]) // 刪除key(Go沒有pop方法,直接訪問後可以手動刪除)
delete(dictDiaphoretic, "防風") // 手動刪除
if val, ok := dictDiaphoretic["香附"]; !ok {
fmt.Println("疏肝行氣") // 不在字典內的,返回默認值
} else {
fmt.Println(val)
}
// 模擬 popitem()(Go沒有直接對應的方法,可以手動實現)
if len(dictDiaphoretic) > 0 {
for key := range dictDiaphoretic {
fmt.Println(dictDiaphoretic[key]) // 輸出被刪除的值
delete(dictDiaphoretic, key) // 刪除最後一個key
break // 只刪除一個(模擬popitem)
}
}
fmt.Println(dictDiaphoretic) // 最終結果
// dictDiaphoretic = make(map[string]string) // 清空字典
// dictDiaphoretic = nil // 刪除字典對象(Go中不能直接刪除變量,只能置為nil)
}
4.Java源碼⏬
import java.util.HashMap;
import java.util.Map;
// ==================== ERP字典模塊 ====================
// 安全讀取配置 // 系統的防崩潰護甲 🛡️
// 智能補全參數 // 程序員的腦外存 🧠
// 移除異常節點 // 數據庫腫瘤切除術 🏥
// 隨機清理緩存 // 內存救急刮刮樂 🎰
// ⚠️ERP老兵_冷溪虎山:刪庫跑路會被通緝
class main27 {
public static void main(String[] args) {
System.out.println("📗📗📗📗📗📗📗📗以下是通過key獲取值");
Map<String, String> dictBlood = new HashMap<>();
dictBlood.put("當歸", "補血");
dictBlood.put("丹蔘", "活血");
dictBlood.put("莪術", "破血");
System.out.println(dictBlood.get("丹蔘")); // 獲取丹蔘的值 活血
System.out.println(dictBlood.getOrDefault("莪術", "破血")); // 獲取莪術的值 破血(如果不存在則返回默認值)
System.out.println("\n📗📗📗📗📗📗📗📗以下是添加key和值,有key則返回值");
System.out.println(dictBlood.get("當歸")); // 當歸存在,返回存在的值
dictBlood.putIfAbsent("紅花", "活血"); // 新增鍵"紅花" 的值(如果不存在才添加)
System.out.println(dictBlood); // 紅花 活血 會被添加到原字典中
System.out.println("\n📗📗📗📗📗📗📗📗以下是刪除key和值");
Map<String, String> dictDiaphoretic = new HashMap<>();
dictDiaphoretic.put("防風", "辛温解表");
dictDiaphoretic.put("細辛", "辛温解表(強)");
dictDiaphoretic.put("升麻", "辛涼解表");
System.out.println(dictDiaphoretic.remove("防風")); // 刪除key
System.out.println(dictDiaphoretic.getOrDefault("香附", "疏肝行氣")); // 不在字典內的,返回默認值
// Java沒有直接對應popitem()的方法,可以手動實現(如取最後一個entry刪除)
if (!dictDiaphoretic.isEmpty()) {
String lastKey = dictDiaphoretic.keySet().iterator().next(); // 簡單示例(實際應取最後一個)
System.out.println(dictDiaphoretic.remove(lastKey)); // 刪除最後一個key
}
System.out.println(dictDiaphoretic); // 最終結果
// dictDiaphoretic.clear(); // 清空字典
// dictDiaphoretic = null; // 刪除字典對象(Java中不能直接刪除變量,只能置為null)
}
}
源碼分享結束⏫
📜【結局:全員操作達標】
⚡ 雷影老闆(看着流暢的增刪操作瞳孔地震):
- 「🏆這操作精度比我的雷遁·千鳥還準!但必須掌握四語言安全刪除差異,否則獎金扣去優化系統穩定性!」
🌸 雛田(小聲提醒鳴人):
- 「鳴人...Java的
putIfAbsent()是原子操作...就像抓藥時鎖住藥櫃...🔒」
🦊 鳴人(舉着拉麪碗歡呼):
- 「哈哈哈!原來
setdefault()就是先摸摸藥櫃有沒有這味藥!佐助——來比誰先清空過期藥材!🍜」
🐯 卡卡西(合上《親熱天堂》):
- 「嗯...總算有點樣子了。下次教你們用字典實現通靈術·緩存召喚...🎯」
💥 佐助(寫輪眼微閃):
- 「哼...吊車尾的,等你能用Go實現併發安全刪除再説吧。」
🧪【四語言字典操作心法口訣】
Python:
- get()防錯,
setdefault()智能補漏,pop()精準切除,popitem()隨機清理🏆
JavaScript:
||短路保平安,delete暴力排毒,手動實現popitem,原型鏈要警惕🥇
Go:
- 雙返回值驗存在,
delete直接下架,順序不保證,併發需加鎖🥈
Java:
getOrDefault()安全查詢,putIfAbsent()原子補漏,remove()返回毒性,迭代器防異常🥉
🔥 記憶口訣:
- 查藥先防錯,刪鍵要謹慎🥇
- Python最便捷,Go最高效,Java最安全,JS最靈活🥈
- 四法通曉藥櫃開,君臣佐使數據安!🥉
⚠️ 免責聲明(附因果律警告)
本代碼已注入中醫玄學能量,請謹慎使用:
-
✅ 允許白嫖,但白嫖不點贊可能導致:
- 下次面試官恰好問到這個算法
- 鍵盤自動打出
//這裏感謝冷溪虎山CTO - 奶茶精準灑在剛寫好的代碼上
-
✅ 允許商用轉發,但商用不註明出處可能觸發:
- 系統類型混亂自動轉型
- 數據庫莫名存儲"君臣佐使"字段
-
✅ 允許吐槽,但吐槽不帶改進建議可能引發:
- 終生與老闆N連鞭相愛相殺
🚀 現在立即行動:
- 點贊 → 吸收本篇算法精華+怪蜀黎腦洞思維
- 收藏 → 避免日後求醫無門
- 關注 → 接收更多「中醫+代碼」腦洞
- 評論區留言 → 領取你的專屬「算法藥方」
⚠️ 友情提示:
- 本文內容過於硬核,建議點贊收藏轉發三連,避免小編
心情波動導致文章神秘消失! - 畢竟小編今天可能愛答不理,明天可能高攀不起——
-
但你的收藏夾,永遠是你最穩的知識備份!
🐶💻 (小聲説:關我小黑屋?不存在的,備份早已同步GitHub/公眾號/網盤!)
📚 往期爆文推薦,VIP輪換解鎖:
📖Python/JS/Go/Java四語言同步學習,跨語言系列上線(別在糾結學什麼單語言了)
🔍 沒看過前傳?快補課!
前1-24篇請移步至"PY-JS-GO-JAVA基礎進階學習系列"合集中閲讀
- Python/JS/Go/Java同步學習(第二十六篇)四語言“字典轉換2和遍歷“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十五篇)四語言“字典創建轉換“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)