Python字典(dict)核心特性与常用操作方法详解
本文详细解析Python中dict数据类型的核心特性,包括键值对结构、不可变键要求及查询优势。重点讲解增加(直接赋值与setdefault)、删除(pop、popitem、del、clear)、修改(update)及查询(keys、values、get)等常用方法,并附带完整代码示例,帮助开发者掌握字典的高效使用。
Python字典的基本特性
字典(dict)是Python中一种内置的数据结构。
字典属于可变数据类型,在代码中使用大括号 {} 进行定义。在字典结构中,键(key)必须为不可变数据类型,而值(value)可以是任意数据类型。
字典的基本格式为 {key:value, key:value, ...}。需要注意的是,当键值对中的键或值为字符串时,通常使用单引号包裹;此外,最后一个键值对末尾不需要添加逗号。
字典具有以下主要优点:
首先,字典的查询速度非常快,其底层实现支持高效的查找算法(如哈希查找,文中提及二分查找概念,实际Python中为哈希表)。
其次,字典中的键(key)具有唯一性,不允许重复。
补充说明:
不可变数据类型包括元组(tuple)、布尔值(bool)、整数(int)和字符串(str),这些类型可以作为字典的键,因为它们支持哈希(hash)。
可变数据类型包括字典(dict)和列表(list),它们不能作为字典的键。
字典的增删改查操作
接下来介绍字典的常用操作方法:
1. 增加元素的方法:字典主要有两种添加或更新键值对的方式。
第一种方式:如果键不存在,则直接添加该键值对;如果键已存在,则用新值覆盖原有值。
dict1={'name':'jinxin','age':18,'male':'男'}
print(dict1)
dict1['high']=185
print(dict1) # {'name': 'jinxin', 'age': 18, 'male': '男', 'high': 185}
dict1['age']=16
print(dict1) # {'name': 'jinxin', 'age': 16, 'male': '男', 'high': 185}
第二种方式:使用 setdefault() 方法。如果键已存在,则不做任何修改;如果键不存在,则添加该键值对(若未指定值,默认为 None)。
dict1.setdefault("weight")
print(dict1) #{'name': 'jinxin', 'age': 16, 'male': '男', 'high': 185, 'weight': None}
dict1.setdefault('weight','65kg')
print(dict1) #{'name': 'jinxin', 'age': 16, 'male': '男', 'high': 185, 'weight': None}
dict1.setdefault('address','北京')
print(dict1) #{'name': 'jinxin', 'age': 16, 'male': '男', 'high': 185, 'weight': None, 'address': '北京'}
2. 删除元素的方法:
第一种删除方式是使用 pop()。如果指定的键存在,则删除该键并返回其值;如果键不存在,则会抛出 KeyError 错误。为了避免报错,可以在 pop() 方法中提供第二个参数作为默认返回值。
delDict={'name': 'jinxin', 'age': 16, 'male': '男', 'high': 185, 'weight': None, 'address': '北京'}
# delDict.pop('age') #dict的删除操作是有返回值的
print(delDict.pop('age')) # 16
print(delDict) #{'name': 'jinxin', 'male': '男', 'high': 185, 'weight': None, 'address': '北京'}
print(delDict.pop('职业','没有此键')) #没有此键
第二种删除方式是使用 popitem()。该方法会随机删除字典中的一个键值对,并返回一个包含已删除键和值的元组。虽然可用,但通常推荐使用 pop() 进行指定删除。
print(delDict.popitem()) # ('address', '北京')
popitem() 的执行结果是随机删除并返回删除的键值对元组。
print(delDict) #{'name': 'jinxin', 'male': '男', 'high': 185, 'weight': None}
第三种删除方式是使用 del 关键字。del 可以删除整个字典,也可以删除字典中特定的键。如果尝试删除不存在的键,程序会报错。
del delDict['name']
print(delDict) #{'male': '男', 'high': 185, 'weight': None}
#使用del清空列表
del delDict
print(delDict) #delDict已经删除,报错
第四种清空字典的方式是使用 clear() 方法,它将清空字典中的所有元素。
3. 修改字典:
#直接修改
updateDict={'name':'jinxin','age':18,'male':'男'}
updateDict['name']='Jordan'
print(updateDict['name']) #Jordan
#调用update()修改
dictDemo={'name':"Jordan",'age':18}
dictDemo1={'address':'北京海淀','age':22}
dictDemo.update(dictDemo1)
print(dictDemo)
4. 查询字典:
第一种查询方式:调用 keys() 方法可以获取字典中所有的键;调用 values() 方法可以获取字典中所有的值。
第二种查询方式:调用 items() 方法可以获取字典中所有的键值对。
# 字典的查
dict1={'name':'jinxin','age':18,'male':'男'}
print(dict1.keys()) #dict_keys(['name', 'age', 'male'])
print(dict1.values()) #dict_values(['jinxin', 18, '男'])
print(dict1.items())# dict_items([('name', 'jinxin'), ('age', 18), ('male', '男')])
#打印dict1的键
for i in dict1.keys():
print(i ) # name age value
#打印dict的值
for v in dict1.values():
print(v) #jinxin 18 男
#打印字典的键值:
dict1={'name':'jinxin','age':18,'male':'男'}
for i in dict1.items():
print(i) # ('name', 'jinxin') ('age', 18) ('male', '男')
for k,v in dict1.items():
print(k,v) # name jinxin age 18 male 男
此外,字典提供了 get() 方法用于安全查询。通过 get(key) 可以查询某个键是否存在,如果键不存在,默认返回 None。为了避免返回 None,可以在 get() 方法中指定第二个参数,当键不存在时返回该指定值。
dict1={'name':'jinxin','age':18,'male':'男'}
print(dict1.get('name')) #jinxin
print(dict1.get('address')) # None
print(dict1.get('address','没有此键')) #没有此键
以上内容涵盖了Python字典的基本特性及常用操作方法,希望能为您的学习提供参考。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









