字典(dict)是Python中一种可变容器模型,可存储任意类型对象。字典的每个键值对用冒号(:)分割,整个字典包括在花括号({})中,格式如下:
my_dict = {'key1': 'value1', 'key2': 'value2'}
问题表现:
my_dict = {'name': 'Alice', 'age': 25}
print(my_dict['address']) # KeyError: 'address'
原因:尝试访问字典中不存在的键
解决方案:
get()
方法(推荐):get()
方法(推荐):in
检查键是否存在:in
检查键是否存在:try-except
块:try-except
块:问题表现:
my_dict = {'name': None}
print(my_dict['name']) # 返回None,可能被误认为访问失败
解决方案:
get()
方法的第二个参数提供默认值问题表现:
my_dict = {1: 'one', '1': 'one string'}
print(my_dict[1]) # 输出 'one'
print(my_dict['1']) # 输出 'one string'
原因:Python字典的键是区分类型的,1和'1'是不同的键
解决方案:
问题表现:
my_dict = {'a': 1}
# 某些操作后...
print(my_dict['a']) # 可能得到意外结果
原因:字典可能在代码的其他位置被修改
解决方案:
copy()
方法创建字典副本进行操作问题表现:
data = {'user': {'profile': {'name': 'Bob'}}}
print(data['user']['profile']['age']) # KeyError
解决方案:
get()
方法:get()
方法:collections.defaultdict
:collections.defaultdict
:get()
方法访问字典,避免KeyErrordict.setdefault()
设置默认值:dict.setdefault()
设置默认值:collections.defaultdict
处理有默认值的字典dict1 = {'a': 1}
dict2 = {'b': 2}
merged = {**dict1, **dict2}
my_dict = {'a': 1, 'b': 2}
keys = my_dict.keys() # 键视图
values = my_dict.values() # 值视图
items = my_dict.items() # 键值对视图
通过理解这些常见问题和解决方案,您应该能够更有效地在Python代码中访问和操作字典。