Python字典(dict)核心特性与常用操作方法详解

青禾
青禾
发布时间:2026-10-14 | 3人浏览过
原创

本文详细解析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字典的基本特性及常用操作方法,希望能为您的学习提供参考。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表