MST
星途 面试题库

面试题:Python中Python字典的键类型限制相关基础考察

请阐述Python字典的键可以使用哪些类型,为什么有些类型可以作为键,有些不行?并举例说明不可作为键的类型及原因。
13.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  • 可作为字典键的类型
    • 不可变类型:如整数(int)、浮点数(float)、字符串(str)、元组(tuple,且元组内元素也必须是不可变类型)。这是因为字典在存储键值对时,需要根据键来计算哈希值以确定存储位置,不可变类型在创建后其值不会改变,哈希值也固定,能保证在字典操作过程中通过键准确找到对应的值。
    • 示例
my_dict = {1: 'one', 'name': 'John', (1, 2): 'pair'}
print(my_dict)
  • 不可作为字典键的类型
    • 可变类型:如列表(list)、集合(set)、字典(dict)。因为可变类型的值可以改变,改变后哈希值也会改变,这就导致在字典中无法通过该键准确找到对应的值。
    • 示例
try:
    bad_dict = {[1, 2]: 'bad_key'}
except TypeError as e:
    print(f"错误原因: {e}")

错误原因通常为 unhashable type: 'list',表明列表这种不可哈希(即不可作为字典键)的类型被尝试用作字典键了。