🤝 免罵聲明:
- 本文
字典創建轉換操作經本蜀黎實戰整理,旨在提供快速參考指南📝- 因各語言版本迭代及不同系統
環境差異,偶爾可能出現整理不全面之處,實屬正常✅- 歡迎理性交流補充,噴子勿噴——畢竟你行你上來寫,我敬你是條漢子,告訴我的你原文鏈接,我給你一鍵三連+轉發👍!
- 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
📚 【虎山CTO劇透預警·字典基礎四部曲】
“藥櫃不識抽屜,何談配伍君臣?” ——《冷溪虎山·數據結構心法》✅
🎯 本期作戰地圖(字典基礎操作完整路線):
- 第25篇:字典創建轉換 ← 當前位置🏆
-
- 學建藥櫃抽屜,貼藥材標籤🌈
- 第26篇:字典轉換2和遍歷🥇
-
- 開櫃查藥性,遍歷如把脈🙏
- 第27篇:字典獲取內容和刪除🥈
-
- 精準抓藥配伍,清理過期藥材🔍
- 第28篇:字典的複製和更新🥉
-
- 藥方傳承修訂,數據庫版本管理📌
🚀 高階應用預告(100+篇後深度解鎖):
- 嵌套字典 = 藥櫃中的小藥格(多維數據建模)🎨
- 字典視圖 = 藥材目錄快速檢索(內存優化技巧)🔎
- 序列化存儲 = 藥方存檔傳承(JSON/數據庫持久化)🥓
💡 虎山CTO學習心法:
- 「字典如藥櫃——創建是打基礎,遍歷是練把脈,增刪是學配伍,複製是傳藥方」🌿
- 四篇環環相扣,建議按序學習,否則如抓藥不識抽屜——君臣錯位,藥性相沖🔁
🌿 特別警示:
- 本系列是後期高級應用(API交互/配置管理/緩存系統)的基石👊
- 跳過基礎直接學高階 → 相當於未背藥性就開方,必遭反噬😱
-
字典將貫穿後續200+篇實戰場景,此處不牢,地動山搖!⚠️
🌿【虎山CTO·藥材使用警示】
- 🍀是藥
三分毒,代碼亦如方! - ❌文中所涉藥材均為技術隱喻,嚴禁實際配伍使用。
- 🙏真實用藥請遵醫囑,亂用者——
- 系統崩壞事小,氣血逆流事大!⚠️
📚 系列文章預告:
- 近期內容將聚焦編程基礎構建,以
「原創知識矩陣」形式系統梳理核心概念。每篇如連續劇集般環環相扣,建議按順序學習——知識點一鍋端,療效更持久!🔥
🧠【場景還原:字典創建轉換特訓】
⚡ 雷影老闆(一拳砸碎鍵盤):
- 「🏆今天學字典——鍵值對如君臣配伍,一個錯位全盤崩!學不會的,通宵手寫《哈希表心經》1000遍!」
🦊 鳴人(對着藥方抓狂):
「伊魯卡老師!為什麼Python用dict(),Java要new HashMap()?Go還要手動make?我的藥材配伍全亂套了!😫」
👨🏫 伊魯卡(粉筆頭精準命中後腦):
- 鳴人!字典如藥櫃抽屜——🍱
- 鍵=藥材名,值=功效説明🥓
- 空字典=新藥櫃,
fromkeys=批量貼空白標籤🧾 zip轉字典=抓藥配對,一味藥對應一個功效🌿
🐯 卡卡西(從《親熱天堂》後抬眼):
- 「🎰嘖...連藥櫃抽屜都分不清,以後怎麼學影分身·鍵值映射之術?」
🧘【扎馬步·字典創建心法】
📚 創建字典如配藥方,方法不同適用場景迥異:
- 直接賦值 → 手寫藥方(靈活但易錯)🥇
fromkeys初始化 → 批量貼空白標籤(高效但呆板)🥈- 列表/元組轉換 → 按藥方抓藥(結構化配對)🥉
🔍 鍵值映射如藥性配伍:
- 鍵唯一性 → 藥材不可重名(當歸不能有兩個功效)🍒
- 值可重複 → 不同藥材可有相同功效(補血藥材多種)🩸
- 動態擴容 → 藥櫃可隨時添加新藥材🧬
| 操作類型 | Python | JavaScript | Go | Java |
|---|---|---|---|---|
| 直接創建 | dict_blood = {"當歸": "補血"} |
const dict_blood = {"當歸": "補血"} |
dict_blood := map[string]string{"當歸": "補血"} |
Map<String, String> dict_blood = new HashMap<>(); |
| 空字典 | dict = {} |
const dict = {} |
dict := make(map[string]string) |
Map<String, String> dict = new HashMap<>(); |
| fromkeys 初始化 | dict.fromkeys(keys) |
手動實現 reduce(無直接等價方法) |
手動循環初始化 | 手動循環調用 put |
| 列表轉字典 | dict(zip(keys, values)) |
Object.fromEntries() |
手動循環賦值 | 手動循環調用 put |
| 元組轉字典 | {tuple(keys): values}(需適當構造) |
{[keys]: values}(通常不推薦,易混淆) |
map[string][]string(鍵為字符串,值為字符串數組) |
Map<List<String>, List<String>>(鍵值均為列表) |
⚠️【避坑指南·字典創建界的"藥性相沖"】
🐍 Python:中文鍵名的引號陷阱
# 這裏假設不使用引號,若直接寫 dict(當歸="補血", 丹蔘="活血"),Python 會把當歸、丹蔘當變量名
# 若之前未定義當歸、丹蔘變量,這種寫法雖可能運行但不規範,以下展示規範寫法
# 錯誤情況示例(假設未定義當歸、丹蔘變量,此寫法不符合規範,實際可能因變量未定義報錯)
# 💥 錯誤示範(中文鍵不帶引號,雖然能運行但不符合PEP8,且易產生歧義)
dict_blood_error = dict(當歸="補血", 丹蔘="活血")
# ✅ 正確做法
# 方式一:使用字面量,鍵用引號包裹,最規範、最清晰
dict_blood1 = {"當歸": "補血", "丹蔘": "活血"}
# 方式二:使用 dict() 構造函數,傳入字典字面量,鍵用引號包裹
dict_blood2 = dict({"當歸": "補血", "丹蔘": "活血"})
# 方式三:使用 dict() 構造函數,傳入包含鍵值對元組的列表,鍵用引號包裹
dict_blood3 = dict([("當歸", "補血"), ("丹蔘", "活血")])
💣 JavaScript:對象與Map的混淆
// 💥 錯誤示範
const dict = {當歸:"補血"};
dict.當歸 = "活血"; // 點運算符對中文鍵不友好
// ✅ 正確做法
const dict = {"當歸":"補血"};
dict["當歸"] = "活血"; // 方括號訪問更安全
⚡ Go:map必須手動初始化
// 💥 錯誤示範
var dict map[string]string
dict["當歸"] = "補血" // panic: assignment to nil map
// ✅ 正確做法
dict := make(map[string]string)
dict["當歸"] = "補血"
☕ Java:泛型類型嚴格
// 💥 錯誤示範
Map dict = new HashMap(); // 原始類型,編譯器警告
dict.put("當歸", "補血");
// ✅ 正確做法
Map<String, String> dict = new HashMap<>();
dict.put("當歸", "補血");
🧪【實戰場景:藥房藥材數據庫構建】
場景:雷影老闆要求建立藥材功效數據庫,快速查詢配伍禁忌
Python(最簡潔):
# 直接創建藥材庫
藥材庫 = {"當歸":"補血", "丹蔘":"活血", "莪術":"破血"}
# 批量初始化新藥材
新藥材 = dict.fromkeys(["白朮", "黃芪"], "待研究")
# 列表轉字典
藥材列表 = dict(zip(["黃連", "黃芩"], ["清熱", "燥濕"]))
四語言對比實戰:
// JavaScript
const 藥材庫 = {"當歸":"補血", "丹蔘":"活血", "莪術":"破血"};
const 新藥材 = Object.fromEntries(["白朮", "黃芪"].map(k => [k, "待研究"]));
const 藥材列表 = Object.fromEntries([["黃連","清熱"], ["黃芩","燥濕"]]);
// Go
藥材庫 := map[string]string{"當歸":"補血", "丹蔘":"活血", "莪術":"破血"}
新藥材 := make(map[string]string)
for _, 藥 := range []string{"白朮", "黃芪"} {
新藥材[藥] = "待研究"
}
// Java
Map<String, String> 藥材庫 = new HashMap<>();
藥材庫.put("當歸", "補血");
藥材庫.put("丹蔘", "活血");
藥材庫.put("莪術", "破血");
Map<String, String> 新藥材 = new HashMap<>();
for (String 藥 : Arrays.asList("白朮", "黃芪")) {
新藥材.put(藥, "待研究");
}
🐯【虎山CTO的字典創建終極暴論】
直接創建如手寫藥方——靈活但需細心🏆fromkeys如批量貼標——高效但呆板🥇列表轉換如按方抓藥——結構化配對🥈元組映射如配伍組合——高級藥對🥉- 跨語言心法:Python最便捷,Go最手動,Java最嚴格,JS最靈活🎯
- 數據建模如配伍藥方——鍵值對應如君臣佐使,錯配則藥性全失🎃
以下是本蜀黎整理源碼和截圖⏬
1.Python源碼⏬
# ==================== 財務字典模塊 ====================
# 科目餘額表創建 # 給每個科目發數字身份證 💳
# 統一初始化零值 # 新會計年度的空白賬簿 📒
# 憑證配對系統 # 科目與金額的包辦婚姻 💒
# ⚠️ERP_冷溪虎山:鍵名衝突會導致賬本血崩
dict_blood = {"當歸":"補血","丹蔘":"活血","莪術":"破血"} #血分藥 正常字典
# dict = {} #空字典
# dict1 = dict() #空字典
print("❤️❤️❤️❤️❤️❤️❤️以下是賦值轉字典📚📚📚📚📚")
dict_blood1 = dict(當歸="補血",丹蔘="活血",莪術="破血") #賦值轉字典 中文key不帶引號會很奇怪
print(dict_blood1)
print("\n❤️❤️❤️❤️❤️❤️❤️以下是fromkeys轉字典📚📚📚📚📚")
dict_blood2 = dict.fromkeys(["當歸","莪術","丹蔘"]) #轉字典 只有key
dict_blood3 = dict.fromkeys(["當歸","丹蔘"],"活血") #轉字典 value值一樣
print(dict_blood2)
print(dict_blood3)
print("\n❤️❤️❤️❤️❤️❤️❤️以下是整體組合轉字典📚📚📚📚📚📚")
list_key = ["白朮","迴心草","藤梨根"]
list_value = ["健脾燥濕","養心安神","消炎抗癌"]
list_dict = dict(zip(list_key,list_value)) #列表轉字典
tuple_dict = {tuple(list_key):list_value} #列表轉元組再轉字典
print(list_dict)
print(tuple_dict)
2.Nodejs源碼⏬
// ==================== 中藥字典模塊 ====================
// 藥材功效映射創建 // 給仙草辦特性户口本 🌿
// 統一藥性初始化 // 煉丹爐默認參數設置 ⚗️
// 君臣配伍系統 // 藥材與劑量的天仙配 💞
// ⚠️虎山老藥師:屬性錯配會引發丹劫
// 1. 普通字典
const dict_blood = {"當歸": "補血", "丹蔘": "活血", "莪術": "破血"};
console.log("❤️❤️❤️❤️❤️❤️❤️以下是賦值轉字典📚📚📚📚📚");
// 2. 賦值轉字典(JS 直接使用對象字面量)
const dict_blood1 = {當歸: "補血", 丹蔘: "活血", 莪術: "破血"};
console.log(dict_blood1);
console.log("\n❤️❤️❤️❤️❤️❤️❤️以下是fromkeys轉字典📚📚📚📚📚");
// 3. fromkeys 轉字典(JS 沒有直接方法,需手動實現)
const keys = ["當歸", "莪術", "丹蔘"];
const dict_blood2 = keys.reduce((acc, key) => {
acc[key] = undefined; // 默認 value 為 undefined
return acc;
}, {});
console.log(dict_blood2);
const dict_blood3 = keys.reduce((acc, key) => {
acc[key] = "活血"; // 所有 key 的 value 相同
return acc;
}, {});
console.log(dict_blood3);
console.log("\n❤️❤️❤️❤️❤️❤️❤️以下是整體組合轉字典📚📚📚📚📚📚");
const list_key = ["白朮", "迴心草", "藤梨根"];
const list_value = ["健脾燥濕", "養心安神", "消炎抗癌"];
const list_dict = Object.fromEntries(list_key.map((key, i) => [key, list_value[i]]));
console.log(list_dict);
// 4. 元組轉字典(JS 沒有元組,用數組模擬)
const tuple_dict = {[list_key]: list_value};
console.log(tuple_dict);
3.Go源碼⏬
package main
import (
"fmt"
"strings"
)
// ==================== 倉儲字典模塊 ====================
// 貨架位置映射創建 // 立體倉庫的GPS系統 🛰️
// 空庫存初始化 // 給所有倉位發空頭支票 🎫
// 物流配對系統 // 商品與快遞單的包辦婚姻 📦
// ⚠️冷溪物流:鍵值重複會讓貨物玩疊疊樂
func main() {
fmt.Println("❤️❤️❤️❤️❤️❤️❤️以下是賦值轉字典📚📚📚📚📚")
dict_blood1 := map[string]string{
"當歸": "補血",
"丹蔘": "活血",
"莪術": "破血",
}
fmt.Println(dict_blood1)
fmt.Println("\n❤️❤️❤️❤️❤️❤️❤️以下是fromkeys轉字典📚📚📚📚📚")
keys := []string{"當歸", "莪術", "丹蔘"}
dict_blood2 := make(map[string]string)
for _, key := range keys {
dict_blood2[key] = "" // 默認 value 為空字符串
}
fmt.Println(dict_blood2)
dict_blood3 := make(map[string]string)
for _, key := range keys {
dict_blood3[key] = "活血" // 所有 key 的 value 相同
}
fmt.Println(dict_blood3)
fmt.Println("\n❤️❤️❤️❤️❤️❤️❤️以下是整體組合轉字典📚📚📚📚📚📚")
list_key := []string{"白朮", "迴心草", "藤梨根"}
list_value := []string{"健脾燥濕", "養心安神", "消炎抗癌"}
list_dict := make(map[string]string)
for i := 0; i < len(list_key); i++ {
list_dict[list_key[i]] = list_value[i]
}
fmt.Println(list_dict)
// 4. 元組轉字典(Go 沒有元組,用 string 模擬)
// 方法 1:拼接成字符串作為鍵
key := strings.Join(list_key, ",")
tuple_dict := make(map[string][]string)
tuple_dict[key] = list_value
fmt.Println(tuple_dict)
}
4.Java源碼⏬
import java.util.*;
// ==================== ERP字典模塊 ====================
// 字段配置映射創建 // 給數據實體發工作證 🪪
// 默認參數初始化 // 系統配置的嬰兒奶粉 🍼
// 表關聯配對系統 // 主外鍵的強制相親 👩❤️💋👨
// ⚠️ERP老兵_冷溪虎山:映射異常會觸發系統中風
class main25 {
public static void main(String[] args) {
// 1. 普通字典
Map<String, String> dict_blood = new HashMap<>();
dict_blood.put("當歸", "補血");
dict_blood.put("丹蔘", "活血");
dict_blood.put("莪術", "破血");
System.out.println("❤️❤️❤️❤️❤️❤️❤️以下是賦值轉字典📚📚📚📚📚");
// 2. 賦值轉字典(Java 直接使用 HashMap)
Map<String, String> dict_blood1 = new HashMap<>();
dict_blood1.put("當歸", "補血");
dict_blood1.put("丹蔘", "活血");
dict_blood1.put("莪術", "破血");
System.out.println(dict_blood1);
System.out.println("\n❤️❤️❤️❤️❤️❤️❤️以下是fromkeys轉字典📚📚📚📚📚");
// 3. fromkeys 轉字典(Java 沒有直接方法,需手動實現)
List<String> keys = Arrays.asList("當歸", "莪術", "丹蔘");
Map<String, String> dict_blood2 = new HashMap<>();
for (String key : keys) {
dict_blood2.put(key, null); // 默認 value 為 null
}
System.out.println(dict_blood2);
Map<String, String> dict_blood3 = new HashMap<>();
for (String key : keys) {
dict_blood3.put(key, "活血"); // 所有 key 的 value 相同
}
System.out.println(dict_blood3);
System.out.println("\n❤️❤️❤️❤️❤️❤️❤️以下是整體組合轉字典📚📚📚📚📚📚");
List<String> list_key = Arrays.asList("白朮", "迴心草", "藤梨根");
List<String> list_value = Arrays.asList("健脾燥濕", "養心安神", "消炎抗癌");
Map<String, String> list_dict = new HashMap<>();
for (int i = 0; i < list_key.size(); i++) {
list_dict.put(list_key.get(i), list_value.get(i));
}
System.out.println(list_dict);
// 4. 元組轉字典(Java 沒有元組,用 List 模擬)
Map<List<String>, List<String>> tuple_dict = new HashMap<>();
tuple_dict.put(list_key, list_value);
System.out.println(tuple_dict);
}
}
源碼分享結束⏫
📜【結局:全員數據庫達標】
⚡ 雷影老闆(看着整齊的藥材數據庫瞳孔地震):
- 「🏆這映射速度比我的雷遁·哈希優化之術還快!但必須掌握四語言字典操作,否則獎金扣去修數據中台!」
🌸 雛田(小聲提醒鳴人):
- 「鳴人...
map初始化前要make...就像配藥前要準備藥罐...🍶」
🦊 鳴人(舉着拉麪碗歡呼):
- 「哈哈哈!原來字典就是給藥材貼標籤,查找就是按名抓藥!佐助——來比誰先建完一樂食材庫!🍜」
🐯 卡卡西(合上《親熱天堂》):
- 「嗯...總算有點樣子了。下次教你們用嵌套字典實現幻術·多維映射...🎯」
💥 佐助(寫輪眼微閃):
- 「哼...吊車尾的,等你能用Go手動實現LRU緩存再説吧。」
🧪【四語言字典創建心法口訣】
Python:
- {}最便捷,
dict()可讀強,zip轉換真優雅,鍵名引號要規範🏆
JavaScript:
- {}字面量,
Object.fromEntries列表轉,點運算符慎用中文鍵🥇
Go:
make必須先初始化,字面量創建最直接,手動循環雖繁瑣但可控🥈
Java:
HashMap泛型不能省,put方法逐個添加,類型安全代價是繁瑣🥉
🔥 記憶口訣:
- 創建前初始化,鍵名要唯一
- 轉換需配對,類型須統一
- 四法通字典,數據任我行!
⚠️ 免責聲明(附因果律警告)
本代碼已注入中醫玄學能量,請謹慎使用:
-
✅ 允許白嫖,但白嫖不點贊可能導致:
- 下次面試官恰好問到這個算法
- 鍵盤自動打出
//這裏感謝冷溪虎山CTO - 奶茶精準灑在剛寫好的代碼上
-
✅ 允許商用轉發,但商用不註明出處可能觸發:
- 系統類型混亂自動轉型
- 數據庫莫名存儲"君臣佐使"字段
-
✅ 允許吐槽,但吐槽不帶改進建議可能引發:
- 終生與老闆N連鞭相愛相殺
🚀 現在立即行動:
- 點贊 → 吸收本篇算法精華+怪蜀黎腦洞思維
- 收藏 → 避免日後求醫無門
- 關注 → 接收更多「中醫+代碼」腦洞
- 評論區留言 → 領取你的專屬「算法藥方」
⚠️ 友情提示:
- 本文內容過於硬核,建議點贊收藏轉發三連,避免小編
心情波動導致文章神秘消失! - 畢竟小編今天可能愛答不理,明天可能高攀不起——
-
但你的收藏夾,永遠是你最穩的知識備份!
🐶💻 (小聲説:關我小黑屋?不存在的,備份早已同步GitHub/公眾號/網盤!)
📚 往期爆文推薦,VIP輪換解鎖:
📖Python/JS/Go/Java四語言同步學習,跨語言系列上線(別在糾結學什麼單語言了)
🔍 沒看過前傳?快補課!
前1-18篇請移步至"PY-JS-GO-JAVA基礎進階學習系列"合集中閲讀
- Python/JS/Go/Java同步學習(第二十四篇)四語言“元組概念“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十三篇)四語言“列表排序|查找統計“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十二篇)四語言“列表刪改查|淺深拷貝“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十一篇)四語言“列表增改查“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十篇)四語言“列表遍歷“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第十九篇)四語言“列表相關操作“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)