python字典的键可以是元组吗_python字典的键可以是元组吗
python字典的鍵
字典中的值沒有任何限制, 可以是任意Python對象,即從標準對象到用戶自定義對象皆可,但是字典中的鍵是有類型限制的。
不允許一個鍵對應多個值
必須明確一條原則:每個鍵只能對應一個項。也就是說:一鍵對應多個值是不允許的(像列表、元組和其他字典這樣的容器對象是可以的)。 當有鍵發生沖突(即字典鍵重復賦值),取最后(最近)的賦值。Python并不會因字典中的鍵存在沖突而產生一個錯誤,它不會檢查鍵的沖突是因為如果真這樣做的話,在每個鍵-值對賦值的時候都會做檢查,這將會占用一定量的內存。>>> dict1 = {'foo':789, 'foo': 'xyz'}
>>> dict1
{'foo': 'xyz'}
>>> dict1['foo'] = 123
>>> dict1
{'foo': 123}
鍵必須是可哈希的
大多數Python對象可以作為鍵,但它們必須是可哈希的對象。像列表和字典這樣的可變類型,由于它們不是可哈希的,所以不能作為鍵。 所有不可變的類型都是可哈希的,因此它們都可以做為字典的鍵。要說明的是:值相等的數字表示相同的鍵,即整型數字1和浮點數1.0的哈希值是相同的,它們是相同的鍵。
同時,也有一些可變對象(很少)是可哈希的,它們可以做字典的鍵,但很少見。舉一個例子,一個實現了__hash__() 特殊方法的類。因為__hash__()方法返回一個整數,所以仍然是用不可變的值(做字典的鍵)。 為什么鍵必須是可哈希的?解釋器調用哈希函數,根據字典中鍵的值來計算存儲你的數據的位置。如果鍵是可變對象,它的值可改變。如果鍵發生變化,哈希函數會映射到不同的地址來存儲數據。如果這樣的情況發生,哈希函數就不可能可靠地存儲或獲取相關的數據。選擇可哈希的鍵的原因就是因為它們的值不能改變。
例如d = {('a','b'):(3,7)}
上述例子,就是把元組當作字典的鍵,可以看到沒有報錯,說明元組充當字典的鍵也是可以的。
數字和字符串可以被用做字典的鍵,元組是不可變的但也可能不是一成不變的,因此用元組做有效的鍵必須要加限制:若元組中只包括像數字和字符串這樣的不可變參數,才可以作為字典中有效的鍵。
總結
以上是生活随笔為你收集整理的python字典的键可以是元组吗_python字典的键可以是元组吗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: airpods美版和国行区别(Airpo
- 下一篇: gis怎么通过水库划分子流域_ArcGI