第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

為什么為字典的鍵“True”賦值會覆蓋同一字典中鍵“1”的值?

為什么為字典的鍵“True”賦值會覆蓋同一字典中鍵“1”的值?

明月笑刀無情 2023-12-29 15:33:30
對于這個(gè)簡單的字典 -鍵 1 和值“apple”始終打印為“1:False”我忽略了這個(gè)原因嗎?$ 貓字典.pypairs = {1: "apple",    "orange": [2, 3, 4],     True: False,     None: "True",}print(pairs)* $ python3.8 字典.py{1: False, 'orange': [2, 3, 4], None: 'True'}謝謝
查看完整描述

1 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

Python 中的類型是where equals the number和equals the numberbool的子類型:intTrue1False0


>>> True == 1

True

>>> False == 0

True

當(dāng)這些值被散列時(shí),它們也會產(chǎn)生相同的值:


>>> hash(True)

1

>>> hash(1)

1

>>> hash(False)

0

>>> hash(0)

0

現(xiàn)在,由于字典鍵基于哈希和對象相等(首先使用哈希相等來快速找到可能相等的鍵,然后通過相等進(jìn)行比較),因此產(chǎn)生相同哈希且相等的兩個(gè)值將產(chǎn)生相同的值字典中的“槽”。


如果您創(chuàng)建也具有此行為的自定義類型,您也可以看到這一點(diǎn):


>>> class CustomTrue:

        def __hash__(self):

            return 1

        def __eq__(self, other):

            return other == 1


>>> pairs = {

        1: "apple",

        "orange": [2, 3, 4], 

        True: False, 

        None: "True",

    }

>>> pairs[CustomTrue()] = 'CustomTrue overwrites the value'

>>> pairs

{1: 'CustomTrue overwrites the value', 'orange': [2, 3, 4], None: 'True'}

雖然這解釋了這種行為,但我確實(shí)同意它可能有點(diǎn)令人困惑。因此,我建議不要使用不同類型的字典鍵,以免遇到這種情況。


查看完整回答
反對 回復(fù) 2023-12-29
  • 1 回答
  • 0 關(guān)注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號