不可变键 (Immutable Key)
在 Python 的字典中,键 (key) 必须是不可变的资料型态。这意味着,一旦将一个键值对加入字典,这个键就不能再被修改。
为什么键必须是不可变的?
-哈希表: 字典底层是使用哈希表来实现的。哈希表通过计算键的哈希值来快速查找值。如果键是可变的,那么它的哈希值也可能会改变,导致无法正确地定位到值。-唯一性: 键在字典中必须是唯一的,如果键是可变的,那么就无法保证键的唯一性。
哪些资料型态可以作为字典的键?
数字: 整数、浮点数字串: 字符串元组: 元组中的元素也必须是不可变的布林值: True 或 False
setdefault() 方法
setdefault() 方法用于在字典中添加键值对。如果指定的键已经存在,则返回该键对应的值;如果不存在,则添加该键值对,并返回指定的默认值。
语法:
dict.setdefault(key, default=None)
-key: 要查找或添加的键。-default: 如果键不存在,则添加的默认值。
my_dict = {\'a\': 1, \'b\': 2}
value = my_dict.setdefault(\'c\', 3)
print(my_dict) # 输出:{\'a\': 1, \'b\': 2, \'c\': 3}
print(value) # 输出:3
value = my_dict.setdefault(\'a\', 4)
print(my_dict) # 输出:{\'a\': 1, \'b\': 2, \'c\': 3}
print(value) # 输出:1
get() 方法
get() 方法用于在字典中查找指定键的值。如果键存在,则返回对应的值;如果不存在,则返回指定的默认值。
语法:dict.get(key, default=None)
setdefault() 和 get() 的区别
setdefault(): 如果键不存在,则会添加一个新的键值对。get(): 如果键不存在,则只返回默认值,不会修改字典。
何时使用 setdefault() 或 get()?
setdefault():初始化字典时,为不存在的键设置默认值。统计词频时,遇到新词时自动增加计数。get():安全地获取字典中的值,避免 KeyError 异常。根据键的存在与否进行不同的操作。
总结
-字典的键必须是不可变的,以保证哈希表的正确性。-setdefault() 方法用于添加键值对,如果键不存在则返回默认值。-get() 方法用于获取键对应的值,如果键不存在则返回默认值。-选择使用 setdefault() 或 get() 取决于具体的应用场景。