动态

详情 返回 返回

Python/JS/Go/Java同步學習(第二十五篇)四語言“字典創建轉換“對照表

🤝 免罵聲明:
  • 本文字典創建轉換操作經本蜀黎實戰整理,旨在提供快速參考指南📝
  • 因各語言版本迭代及不同系統環境差異,偶爾可能出現整理不全面之處,實屬正常✅
  • 歡迎理性交流補充,噴子勿噴——畢竟你行你上來寫,我敬你是條漢子,告訴我的你原文鏈接,我給你一鍵三連+轉發👍!
  • 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
    土味海報

📚 【虎山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)

Python

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);
 

nodejs

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)
}

go

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);
    }
}

Java

源碼分享結束⏫

📜【結局:全員數據庫達標】

⚡ 雷影老闆(看着整齊的藥材數據庫瞳孔地震):
  • 「🏆這映射速度比我的雷遁·哈希優化之術還快!但必須掌握四語言字典操作,否則獎金扣去修數據中台!」
🌸 雛田(小聲提醒鳴人):
  • 「鳴人...map初始化前要make...就像配藥前要準備藥罐...🍶」
🦊 鳴人(舉着拉麪碗歡呼):
  • 「哈哈哈!原來字典就是給藥材貼標籤,查找就是按名抓藥!佐助——來比誰先建完一樂食材庫!🍜」
🐯 卡卡西(合上《親熱天堂》):
  • 「嗯...總算有點樣子了。下次教你們用嵌套字典實現幻術·多維映射...🎯」
💥 佐助(寫輪眼微閃):
  • 「哼...吊車尾的,等你能用Go手動實現LRU緩存再説吧。」
🧪【四語言字典創建心法口訣】

Python:

  • {}最便捷,dict()可讀強,zip轉換真優雅,鍵名引號要規範🏆

JavaScript:

  • {}字面量,Object.fromEntries列表轉,點運算符慎用中文鍵🥇

Go:

  • make必須先初始化,字面量創建最直接,手動循環雖繁瑣但可控🥈

Java:

  • HashMap泛型不能省,put方法逐個添加,類型安全代價是繁瑣🥉
🔥 記憶口訣:
  • 創建前初始化,鍵名要唯一
  • 轉換需配對,類型須統一
  • 四法通字典,數據任我行!

⚠️ 免責聲明(附因果律警告)

本代碼已注入中醫玄學能量,請謹慎使用:

  • ✅ 允許白嫖,但白嫖不點贊可能導致:

    • 下次面試官恰好問到這個算法
    • 鍵盤自動打出//這裏感謝冷溪虎山CTO
    • 奶茶精準灑在剛寫好的代碼上
  • ✅ 允許商用轉發,但商用不註明出處可能觸發:

    • 系統類型混亂自動轉型
    • 數據庫莫名存儲"君臣佐使"字段
  • ✅ 允許吐槽,但吐槽不帶改進建議可能引發:

    • 終生與老闆N連鞭相愛相殺

🚀 現在立即行動:

  1. 點贊 → 吸收本篇算法精華+怪蜀黎腦洞思維
  2. 收藏 → 避免日後求醫無門
  3. 關注 → 接收更多「中醫+代碼」腦洞
  4. 評論區留言 → 領取你的專屬「算法藥方」

⚠️ 友情提示:

  • 本文內容過於硬核,建議點贊收藏轉發三連,避免小編心情波動導致文章神秘消失
  • 畢竟小編今天可能愛答不理,明天可能高攀不起——
  • 但你的收藏夾,永遠是你最穩的知識備份!

    🐶💻 (小聲説:關我小黑屋?不存在的,備份早已同步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同步學習(第十九篇)四語言“列表相關操作“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
user avatar
0 用户, 点赞了这篇动态!

发布 评论

Some HTML is okay.