一文讀懂Python數字、字符串、列表和元組是否可以作為字典的鍵
在Python中,字典(dictionary)是一種可變的數據結構,它存儲鍵值對(key-value pairs)。對于字典的鍵,Python確實允許使用多種數據類型,包括數字、字符串、列表和元組。但是,要注意的一點是,列表是不能作為字典的鍵的,因為列表是可變的(mutable),而字典的鍵必須是不可變的(immutable)。元組在作為鍵時,只要其包含的元素都是不可變的,那么它就可以作為字典的鍵。
下面是使用數字、字符串和元組作為字典鍵的示例:
# 使用數字作為鍵
num_dict = {
1: 'one',
2: 'two',
3: 'three'
}
# 使用字符串作為鍵
str_dict = {
'name': 'Alice',
'age': 30,
'city': 'New York'
}
# 使用元組作為鍵(只要元組中的元素都是不可變的)
tuple_dict = {
(1, 'a'): 'value1',
(2, 'b'): 'value2',
(3, 'c'): 'value3'
}
print(num_dict)
print(str_dict)
print(tuple_dict)
運行以上代碼,您將得到三個字典,它們的鍵分別是數字、字符串和元組。
然而,嘗試使用列表作為字典的鍵將會導致一個TypeError,因為列表是可變的:
# 嘗試使用列表作為鍵(這將失敗)
list_dict = {
[1, 2, 3]: 'value' # 這會拋出TypeError
}
如果您嘗試運行上述代碼,將會得到一個錯誤,類似于:
TypeError: unhashable type: 'list'
這是因為字典的鍵必須是可哈希的(hashable),而列表不是可哈希的。可哈希意味著對象具有不變的哈希值,這樣字典才能根據鍵快速查找值。數字、字符串和元組(如果它們包含的元素都是不可變的)都是可哈希的,而列表則不是。