Python中的字典(Dictionary)是一种可变的、无序的、键值对(key-value pair)集合。字典中的每个元素都是一个键值对,键(key)用于唯一标识一个值(value)。字典的键必须是不可变类型,如字符串、数字或元组,而值可以是任意类型。
Python字典的类型是dict
。
# 创建字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 访问字典中的值
print(my_dict['name']) # 输出: Alice
# 修改字典中的值
my_dict['age'] = 26
print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}
# 添加新的键值对
my_dict['country'] = 'USA'
print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}
# 删除键值对
del my_dict['city']
print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'country': 'USA'}
原因:字典的内部实现依赖于哈希表(hash table),哈希表通过键的哈希值来快速定位键值对。不可变类型的对象(如字符串、数字)具有固定的哈希值,可以保证在字典中查找时的稳定性。如果键是可变类型(如列表),其哈希值可能会改变,导致字典内部结构混乱。
解决方法:确保字典的键是不可变类型,如使用元组代替列表作为键。
# 错误示例
my_dict = {[1, 2]: 'value'} # TypeError: unhashable type: 'list'
# 正确示例
my_dict = {(1, 2): 'value'} # 正确
原因:直接访问字典中不存在的键会引发KeyError
。
解决方法:使用get()
方法或in
关键字来检查键是否存在。
my_dict = {'name': 'Alice', 'age': 25}
# 使用get()方法
value = my_dict.get('city', 'Unknown')
print(value) # 输出: Unknown
# 使用in关键字
if 'city' in my_dict:
print(my_dict['city'])
else:
print('City not found') # 输出: City not found
领取专属 10元无门槛券
手把手带您无忧上云