最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python dict key的使用及問(wèn)題小結(jié)

 更新時(shí)間:2026年05月24日 08:19:28   作者:Warson_L  
本文主要介紹了python dict key的使用及問(wèn)題小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

A Dictionary Key must be like a permanent ID card. If the ID card can change its name or numbers, Python will lose track of where your data is stored."

Python Lesson: Why Dictionary Keys must be "Immutable"

教學(xué)主題:為什么字典的鍵(Key)必須是“不可變”的?

1. The Core Concept: Rocks vs. Clay

核心概念:石頭與橡皮泥

English Explanation: In Python, every object is either "Immutable" or "Mutable."

  • Immutable (Like a Rock): Once created, you cannot change its content. If you want a different value, you must create a brand new rock. Examples: int, float, string, tuple.
  • Mutable (Like Clay): You can change, add, or remove parts of it without destroying the original object. Example: list.

中文深度解析: 在 Python 的世界里,所有數(shù)據(jù)類型可以分為兩大類:“不可變”和“可變”。

  • 不可變(Immutable - 像石頭): 想象你在石頭上刻了一個(gè)字“5”。如果你想把它變成“6”,你沒(méi)法擦掉重刻,你只能扔掉這塊石頭,去換一塊刻著“6”的新石頭。字符串、數(shù)字和元組就是這樣的石頭。
  • 可變(Mutable - 像橡皮泥): 列表(List)就像一塊橡皮泥。你可以往里面塞一個(gè)球,或者捏掉一部分。這塊橡皮泥還是原來(lái)那一塊,但它的內(nèi)容變了。

2. The "Address" Secret: Usingid()

內(nèi)存地址的秘密:使用id()函數(shù)

Explanation: Every object in Python has a unique "Home Address" called an ID. We can use the id() function to see where Python stores our data in its memory.

Let's look at the difference:

# --- PART A: The Immutable String (The Rock) ---
print("--- String Test ---")
word = "Apple"
print(f"Value: {word}, Memory Address: {id(word)}")

# If we change 'word', Python creates a NEW address
word = "Banana"
print(f"Value: {word}, Memory Address: {id(word)}") 
# Notice: The ID changed! It's a different 'house' now.

# --- PART B: The Mutable List (The Clay) ---
print("\n--- List Test ---")
my_list = [1, 2]
print(f"Value: {my_list}, Memory Address: {id(my_list)}")

# We change the CONTENT of the list
my_list.append(3)
print(f"Value: {my_list}, Memory Address: {id(my_list)}")
# Notice: The ID is EXACTLY THE SAME! 
# The 'house' is the same, but the 'furniture' inside changed.

中文深度解析: 每個(gè)數(shù)據(jù)在電腦內(nèi)存里都有一個(gè)“家庭住址”,在 Python 里用 id() 來(lái)查看。

  • 字符串實(shí)驗(yàn): 當(dāng)你把變量從 "Apple" 改成 "Banana" 時(shí),你會(huì)發(fā)現(xiàn) id 變了。這意味著舊的 "Apple" 被拋棄了,Python 在新地址創(chuàng)建了 "Banana"。這就是“不可變”——你改不了原地址的內(nèi)容。
  • 列表實(shí)驗(yàn): 當(dāng)你給列表 append(增加)一個(gè)數(shù)字時(shí),你會(huì)驚奇地發(fā)現(xiàn) id 居然沒(méi)變!這意味著“房子”還是那個(gè)房子,但里面的東西被你偷偷改了。這就是“可變”。

3. Why Dictionaries Hate Mutable Keys

為什么字典討厭“可變”的鍵?

Explanation: A Dictionary is like a set of Lockers. The Key is the label on the door. To find your stuff quickly, Python turns the Key into a "fingerprint" (called a Hash).

  • If the Key is a List, you could change the list after putting it on the locker.
  • Now the "fingerprint" doesn't match anymore! Python gets lost and can't find your locker.
  • Conclusion: Python only allows Keys that never change (Immutable), so it never loses your data.

中文深度解析: 字典就像一排儲(chǔ)物柜。**鍵(Key)**就是柜門(mén)上的標(biāo)簽。 為了能瞬間找到東西,Python 會(huì)給標(biāo)簽拍一張“指紋照”(這叫 Hash)。

  • 如果你用列表當(dāng)標(biāo)簽:當(dāng)你存入東西時(shí),標(biāo)簽是 [1, 2]。但如果你隨后偷偷把列表改成了 [1, 2, 3],雖然標(biāo)簽的“住址”(id) 沒(méi)變,但它的“長(zhǎng)相”變了!
  • 下次你來(lái)取東西,Python 拿著舊指紋去對(duì),發(fā)現(xiàn)標(biāo)簽長(zhǎng)得不一樣了。Python 會(huì)抓狂:“這不科學(xué)!柜子丟了!”
  • 結(jié)論: 為了防止這種混亂,Python 強(qiáng)制規(guī)定:只有“不可變”的東西(指紋永遠(yuǎn)不變的)才能當(dāng)字典的 Key。

4. Code Examples: Success vs. Failure

代碼示例:成功與失敗

# SUCCESS: Using a String (Immutable)
student = {"name": "Alice"} 

# SUCCESS: Using a Tuple (Immutable - it's a 'frozen' list)
# We will learn Tuples next! They use ()
coordinates = {(10, 20): "Hidden Treasure"}
print(coordinates[(10, 20)])

# FAILURE: Using a List (Mutable)
try:
    bad_dict = {[1, 2]: "This will crash"}
except TypeError as e:
    print(f"\nPYTHON SAYS: {e}") 
    # It says 'unhashable type: list'
    # 'Unhashable' means 'Mutable and cannot be trusted as a Key!'

5. Quiz: Are you a Python Master?

Answer the following questions based on what we learned about addresses and mutability.

Q1: Which of these can be a Dictionary Key?

  • A) [1, 2, 3]
  • B) "Python"
  • C) 99

Q2: If I have a list x = [1], and I do x.append(2), does the id(x) change? (Yes / No)

Q3: Why does Python give an error when we use a list as a Key?

  • A) Because lists are too long.
  • B) Because lists are mutable and their "fingerprint" (hash) could change.
  • C) Because lists are only for values, not keys.

到此這篇關(guān)于python dict key的使用及問(wèn)題小結(jié)的文章就介紹到這了,更多相關(guān)python dict key內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python如何根據(jù)x軸、y軸坐標(biāo)在坐標(biāo)軸里畫(huà)出曲線圖

    python如何根據(jù)x軸、y軸坐標(biāo)在坐標(biāo)軸里畫(huà)出曲線圖

    這篇文章主要介紹了python如何根據(jù)x軸、y軸坐標(biāo)在坐標(biāo)軸里畫(huà)出曲線圖問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 淺談django 重載str 方法

    淺談django 重載str 方法

    這篇文章主要介紹了淺談django 重載str 方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 一文詳解python中dataclass的使用技巧

    一文詳解python中dataclass的使用技巧

    dataclass是從Python3.7版本開(kāi)始,作為標(biāo)準(zhǔn)庫(kù)中的模塊被引入,隨著Python版本的不斷更新,dataclass也逐步發(fā)展和完善,為Python開(kāi)發(fā)者提供了更加便捷的數(shù)據(jù)類創(chuàng)建和管理方式,本文總結(jié)了幾個(gè)我平時(shí)使用較多dataclass技巧,需要的朋友可以參考下
    2024-03-03
  • python 設(shè)置xlabel,ylabel 坐標(biāo)軸字體大小,字體類型

    python 設(shè)置xlabel,ylabel 坐標(biāo)軸字體大小,字體類型

    這篇文章主要介紹了python 設(shè)置xlabel,ylabel 坐標(biāo)軸字體大小,字體類型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python中常用utils庫(kù)詳細(xì)介紹

    Python中常用utils庫(kù)詳細(xì)介紹

    這篇文章主要給大家介紹了關(guān)于Python中常用utils庫(kù)的相關(guān)資料,Utils是一個(gè)Python庫(kù),它提供了一系列的工具,可以幫助你更輕松地管理你的Python環(huán)境,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 根據(jù)tensor的名字獲取變量的值方式

    根據(jù)tensor的名字獲取變量的值方式

    今天小編就為大家分享一篇根據(jù)tensor的名字獲取變量的值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • python自制包并用pip免提交到pypi僅安裝到本機(jī)【推薦】

    python自制包并用pip免提交到pypi僅安裝到本機(jī)【推薦】

    這篇文章主要介紹了python自制包并用pip免提交到pypi僅安裝到本機(jī),本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • PyTorch中l(wèi)oading fbgemm.dll異常的解決辦法

    PyTorch中l(wèi)oading fbgemm.dll異常的解決辦法

    PyTorch是一個(gè)深度學(xué)習(xí)框架,當(dāng)我們?cè)诒镜卣{(diào)試大模型時(shí),可能會(huì)選用并安裝它,目前已更新至2.4版本,本文給大家介紹了PyTorch中l(wèi)oading fbgemm.dll異常的解決辦法,文中通過(guò)代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • python中刪除某個(gè)元素的方法解析

    python中刪除某個(gè)元素的方法解析

    這篇文章主要介紹了python中刪除某個(gè)元素的方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 如何在Python中捕獲finally語(yǔ)句中異常消息

    如何在Python中捕獲finally語(yǔ)句中異常消息

    正常情況下,finally語(yǔ)句不會(huì)捕獲異常,而是在異常處理完成后執(zhí)行,那么如何在Python中捕獲finally語(yǔ)句中異常消息呢,下面小編就來(lái)和大家詳細(xì)聊聊
    2024-02-02

最新評(píng)論

庆元县| 东光县| 林芝县| 屯门区| 册亨县| 宜兰市| 凤城市| 江油市| 青龙| 铜鼓县| 河池市| 桐梓县| 若尔盖县| 邹城市| 历史| 济阳县| 三穗县| 河池市| 天台县| 类乌齐县| 上蔡县| 京山县| 南阳市| 珲春市| 泾阳县| 富源县| 枞阳县| 邮箱| 同仁县| 固始县| 永平县| 汉沽区| 巢湖市| 鲁山县| 东海县| 舒城县| 鹿泉市| 海盐县| 岳普湖县| 礼泉县| 莒南县|